Testing

-webkit-touch-callout: Browser Support, Values, Use Cases

-webkit-touch-callout works only on Safari for iOS and iPadOS from Safari 2 on. Learn the values, the use cases, and the known issues.

Author

Prince Dewani

May 6, 2026

-webkit-touch-callout is a non-standard WebKit CSS property that controls the default callout shown when you press and hold a touch target on iOS Safari. It works on Safari for iOS and iPadOS from Safari 2 on, while Chrome, Edge, Firefox, Opera, Samsung Internet, the Android WebView, and Safari on macOS ignore the property on every release.

This guide covers what -webkit-touch-callout is, the browsers that support it, the values, the use cases, and the known issues.

What is -webkit-touch-callout?

-webkit-touch-callout is a CSS extension the WebKit team added to control the system callout, the action sheet that pops up on a long press in iOS Safari. It accepts two values, default and none, and only mobile WebKit ever shipped it. Apple documents the property in the Safari CSS Reference.

Which browsers does -webkit-touch-callout support?

Only Safari on iOS and iPadOS ever shipped -webkit-touch-callout. Every desktop engine, every Chromium build, and every Gecko release parses the rule and then ignores the value.

Loading browser compatibility data...

-webkit-touch-callout compatibility in Chrome

Chrome does not support -webkit-touch-callout on Windows, macOS, Linux, ChromeOS, or Android. Blink parses the rule and silently drops the value, and there is no flag in chrome://flags that turns it on. A long press on a link inside Chrome on Android shows the Chromium context menu, which is governed by the contextmenu event and the -webkit-user-select property instead.

-webkit-touch-callout compatibility in Edge

Microsoft Edge does not support -webkit-touch-callout on any version. Chromium-based Edge 79 and later inherit Blink's behavior and ignore the property. Legacy EdgeHTML versions, Edge 12 to 18, also lacked support. Edge on iOS rides on the WebKit engine, so the property does take effect there, since the App Store rules force every iOS browser onto WebKit.

-webkit-touch-callout compatibility in Firefox

Firefox does not support -webkit-touch-callout on any desktop, ESR, or Android release. Mozilla never added the WebKit prefix and there is no about:config preference to switch it on. Firefox on iOS, like every iOS browser, paints the platform callout from the underlying WebKit view, so the property does take effect there too.

-webkit-touch-callout compatibility in Safari

Safari on macOS does not support -webkit-touch-callout, since the property only ever shipped on mobile WebKit on a touch device. Safari on iPhone and iPad supports the property from Safari 2 on iOS through every current Safari release on iOS 17 and iPadOS 17. The default value shows the system callout, and none suppresses it on the matching element.

-webkit-touch-callout compatibility in Opera

Opera does not support -webkit-touch-callout on Windows, macOS, Linux, or Android. Opera 15 and later inherit Blink and ignore the property. Opera Mini renders pages on a server proxy, so the rule never reaches the device. Opera Mobile on Android paints the standard Chromium context menu instead.

-webkit-touch-callout compatibility in Samsung Internet

Samsung Internet does not support -webkit-touch-callout on any version. Samsung Internet ships on Chromium and inherits Blink's behavior, so the rule parses but the value is ignored. A long press on a link in Samsung Internet shows the Chromium context menu, controlled by the contextmenu event rather than the WebKit prefix.

-webkit-touch-callout compatibility in Android Browser

The Android Browser and the Android WebView do not support -webkit-touch-callout. The legacy AOSP WebKit Android Browser parsed the rule but never wired the disable behavior, and Android WebView switched to Chromium in Android 4.4, after which the property is ignored on every Android device. Chrome for Android and Firefox for Android also lack support.

-webkit-touch-callout compatibility in Internet Explorer

Internet Explorer does not support -webkit-touch-callout on any version, from IE 6 through IE 11. Microsoft has retired Internet Explorer. Trident has its own context-menu model and never adopted the WebKit prefix, so the property is dead code on every IE-mode user still on Windows.

Note

Note: -webkit-touch-callout only takes effect on Safari for iOS and iPadOS, and behaves differently across long-press gestures. Test it on real iOS devices and desktop browsers with TestMu AI. Try TestMu AI free!

What are the values of -webkit-touch-callout?

-webkit-touch-callout accepts two declared values, default and none. Each one tells iOS Safari whether to show or hide the system callout when the user presses and holds a touch target.

  • default: The initial value. iOS Safari shows the system callout, the action sheet with Open, Copy Link, Save Image, and similar entries, on a long press. Most pages never set this value explicitly, since it is the platform default.
  • none: Suppresses the callout on the matching element. The long press still fires touchstart and contextmenu events, so a custom JavaScript handler can run, but the iOS action sheet never appears. The value is the only reason most teams reach for this property.

The snippet below shows the typical drag-handle pattern, an iOS-only @supports gate, and a child override that re-enables the callout. Paste it into a stylesheet and the rules take effect on the next paint.

/* Suppress the iOS long-press callout on a custom drag handle. */
.drag-handle {
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  user-select: none;
}

/* iOS Safari only: tighten a touch target without breaking other browsers. */
@supports (-webkit-touch-callout: none) {
  .drag-handle {
    touch-action: none;
  }
}

/* Re-enable the default callout on a child if a parent disabled it. */
.allow-callout {
  -webkit-touch-callout: default;
}

-webkit-touch-callout is non-inherited, has no shorthand, and has no animation type. The property only changes the system callout, not the magnifier loupe or the text-selection handles, so pair it with -webkit-user-select: none when you want to lock both behaviors.

...

What are the use cases of -webkit-touch-callout?

-webkit-touch-callout: none is the only declaration most teams ever ship for this property. The rule clears the iOS callout out of the way of a custom long-press interaction so the page can run its own gesture without the system action sheet stealing focus.

  • Custom drag-and-drop on iOS: Drag handles built on touchstart and touchmove conflict with the long-press callout. Setting -webkit-touch-callout: none on the handle keeps the gesture clean and the user does not see Open or Copy Link mid-drag.
  • Image-protection overlays: Portfolio sites, photo galleries, and stock-image previews use -webkit-touch-callout: none to hide the Save Image option on iOS Safari. Pair it with -webkit-user-select: none and a contextmenu handler to lock copy on desktop too.
  • Game canvases and HTML5 boards: Touch-driven game elements rely on rapid touchstart and touchend pairs. The system callout would interrupt the gesture, so the canvas root usually sets -webkit-touch-callout: none on every interactive layer.
  • PWAs that mimic native apps: Web apps installed to the iOS home screen aim for a native feel. Suppressing the callout on buttons, tabs, and list items removes the obvious browser cue and brings the interaction closer to a UIKit control.
  • Long-press menus you build yourself: Trello-style cards, Slack-style message actions, and chat reactions all attach a custom menu to a long press. The property prevents the iOS action sheet from racing the JavaScript handler that opens the in-app menu.

What are the known issues with -webkit-touch-callout?

-webkit-touch-callout has the smallest cross-browser footprint of any touch CSS rule, and the painful edge cases land on iOS Safari, the magnifier loupe, and the interaction with -webkit-user-select.

  • iOS only: The property is a no-op on every desktop engine, every Android Chromium build, and every Gecko release. Sites that ship the rule for cross-browser image protection are getting iOS coverage only and need a contextmenu event handler for the rest.
  • Magnifier loupe still fires: Setting -webkit-touch-callout: none hides the action sheet, but iOS Safari still shows the magnifier loupe on a long press over text. To suppress that too, set -webkit-user-select: none on the same element.
  • Image saving still possible by screenshot: The rule blocks the Save Image entry, but a user can still screenshot the page or open the image directly in a USB-tethered DevTools session. Treat the property as a UX hint, not a copy-protection mechanism.
  • Inheritance gotcha on links: Anchor elements inside a parent that sets -webkit-touch-callout: none still expose the callout if the link is a separate touch target with its own long-press handler. Apply the rule on the anchor itself when in doubt.
  • Cross-origin iframe limits: A cross-origin iframe inside an iOS Safari page renders with its own touch model. Setting the property on the parent does not propagate into the frame, and the frame's stylesheet has to set its own -webkit-touch-callout: none.
  • Lint rules flag it: Stylelint and the Chrome DevTools Issues panel mark -webkit-touch-callout as a non-standard property. Build pipelines that strip vendor prefixes can drop it from the production bundle, so disable that rule for the WebKit prefix or keep the declaration in a hand-managed stylesheet.

In my experience, the safest pattern is to scope -webkit-touch-callout: none to the exact touch target that needs it, pair it with -webkit-user-select: none and touch-action: none, and back the gesture with a contextmenu event listener. The CSS handles iOS Safari, the event listener covers every other browser, and the audit log stays clean when a linter flags the WebKit prefix.

...

Author

Prince Dewani is a Community Contributor at TestMu AI, where he manages content strategies around software testing, QA, and test automation. He is certified in Selenium, Cypress, Playwright, Appium, Automation Testing, and KaneAI. Prince has also presented academic research at the international conference PBCON-01. He further specializes in on-page SEO, bridging marketing with core testing technologies. On LinkedIn, he is followed by 4,300+ QA engineers, developers, DevOps experts, tech leaders, and AI-focused practitioners in the global testing community.

Open in ChatGPT Icon

Open in ChatGPT

Open in Claude Icon

Open in Claude

Open in Perplexity Icon

Open in Perplexity

Open in Grok Icon

Open in Grok

Open in Gemini AI Icon

Open in Gemini AI

Copied to Clipboard!
...

3000+ Browsers. One Platform.

See exactly how your site performs everywhere.

Try it free
...

Write Tests in Plain English with KaneAI

Create, debug, and evolve tests using natural language.

Try for free

Frequently asked questions

Did you find this page helpful?

More Related Hubs

TestMu AI forEnterprise

Get access to solutions built on Enterprise
grade security, privacy, & compliance

  • Advanced access controls
  • Advanced data retention rules
  • Advanced Local Testing
  • Premium Support options
  • Early access to beta features
  • Private Slack Channel
  • Unlimited Manual Accessibility DevTools Tests