Blob URLs work in Chrome 8+, Edge 12+, Firefox 4+, Safari 6+, IE 10+. See how URL.createObjectURL works, common use cases, and how to revoke a blob URL.

Prince Dewani
May 6, 2026
Blob URLs are a W3C File API scheme that lets a web page reference binary data or media held in browser memory through a blob: URL. They work in Chrome 8+, Edge 12+, Firefox 4+, Safari 6+ on macOS and iOS, Opera 15+, Samsung Internet 4+, and Internet Explorer 10+.
This guide covers what a Blob URL is, browser support, how it works, common use cases, creating and revoking one, and known issues.
A Blob URL is a string of the form blob:https://example.com/<uuid> that the browser hands back from URL.createObjectURL(). It points at a Blob, File, or MediaSource object held in memory by the page that created it. The W3C File API specifies the scheme.
Blob URLs are baseline widely available. Every major desktop and mobile browser shipped support more than ten major versions ago, and there are no flag-gated rollouts to worry about today.
Chrome supports Blob URLs from Chrome 8 on Windows, macOS, Linux, and ChromeOS, and from the same baseline on Chrome for Android. URL.createObjectURL and URL.revokeObjectURL are unprefixed and on by default.
Edge supports Blob URLs from Edge 12 on the legacy EdgeHTML engine and from Edge 79 on the Chromium engine. The Chromium switch did not change the API surface, so existing code keeps working.
Firefox supports Blob URLs from Firefox 4 on Windows, macOS, and Linux, and from the same baseline on Firefox for Android. The early builds exposed the API on URL only; the legacy webkitURL prefix is no longer needed.
Safari supports Blob URLs from Safari 6 on macOS and from Safari 6 on iOS. Both platforms ship the API unprefixed. iOS Safari kept the same parity through every later release, so a Blob URL that runs on macOS Safari runs on iOS Safari.
Opera supports Blob URLs from Opera 15 on desktop, the first Chromium-based release, and from Opera Mobile on the Chromium baseline. Older Presto Opera 12 also exposed the API behind the URL object.
Samsung Internet supports Blob URLs from Samsung Internet 4 on Android. The browser tracks Chromium, so every later Samsung Internet release ships the same API surface as the matching Chrome version.
The Android Browser supports Blob URLs from Android 4.4 KitKat on, when the system WebView switched to Chromium. Earlier stock browsers based on the legacy WebKit engine had partial support that tied the URL to the page lifetime.
Internet Explorer supports Blob URLs from IE 10 on Windows 7 and Windows 8. IE 10 and 11 expose URL.createObjectURL but not msSaveOrOpenBlob inside iframes. Microsoft has retired Internet Explorer, so prefer Edge for any modern test pass.
Note: Blob URLs behave the same on paper but break in subtle ways across mobile Safari, IE 11, and older Android WebViews. Test them on real browsers and OS with TestMu AI. Try TestMu AI free!
A Blob URL is a short opaque pointer that the browser keeps in a per-document blob store. The page hands the browser a Blob; the browser hands the page back a URL; the URL only resolves inside that document.
Three things happen end to end:
The URL is bound to the origin and the document that created it, which is why pasting a blob: URL into a different tab fails. Blob URLs cannot be sent over the wire either, since the bytes never leave the browser process.
Anywhere a page holds bytes the user wants to see, save, or stream, a Blob URL is the cheapest handle to that memory. The pattern shows up across upload pickers, media players, and offline tools.
Creating a Blob URL is one method call; cleaning it up is one more. Skipping the cleanup step is the single most common Blob URL bug, so wire the revoke call up at the same time you write the create call.
// Paste into the browser DevTools console on any page.
// Builds a small text Blob, gets a blob: URL, opens it, and revokes it.
const blob = new Blob(["Hello from TestMu AI"], { type: "text/plain" });
const url = URL.createObjectURL(blob);
console.log("Blob URL:", url);
// Example output: blob:https://example.com/2f1e9c8a-7b32-4d11-9c23-c0f9d7e1a801
const link = document.createElement("a");
link.href = url;
link.download = "hello.txt";
link.textContent = "Download sample";
document.body.appendChild(link);
// Always free the memory once the URL is no longer needed.
link.addEventListener("click", () => {
setTimeout(() => URL.revokeObjectURL(url), 1000);
});If the snippet logs a blob: URL but the download link does nothing, the page is sandboxed; remove the sandbox attribute on the iframe or run the snippet on the top-level document instead.
Blob URLs look universal on a compatibility chart, but the edges show up the moment a page outlives a single render or crosses a security boundary. Plan for these before you ship.
In my experience, the leak path is the one that ships to production unnoticed; the security errors are loud, the leak is silent until the tab gets killed for using two gigabytes of memory.
All Blob URL version numbers and behavior notes in this guide come from these primary sources:
Did you find this page helpful?
More Related Hubs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance