Font Access API - Online Browse Local Fonts
Enumerate all fonts installed on your device and see a real‑time preview. Useful for design tools. Permission required.
UD5 Toolkit
Test document.fonts — wait for fonts ready, measure load times & inspect FontFaceSet
document.fonts. Please use a modern browser (Chrome 35+, Firefox 41+, Safari 10+, Edge 79+).
document.fonts
| Family | Weight | Style | Status | Check() |
|---|---|---|---|---|
| Click "Refresh List" or load fonts to populate | ||||
Wait for all fonts ready
Load a specific font
Check if font is loaded
Iterate all fonts
document.fonts — a FontFaceSet object that represents all fonts currently registered on the page. It exposes .ready (a Promise), .load(), .check(), and .forEach() methods, giving developers fine-grained control over font loading behavior.
document.fonts.ready returns a Promise that resolves when all fonts on the page have finished loading (or failed). This includes fonts defined via @font-face in CSS as well as fonts added dynamically via FontFace + document.fonts.add(). If all fonts are already loaded at the time of access, the Promise resolves immediately. This is the most common method to safely trigger rendering after web fonts are available, helping avoid FOIT (Flash of Invisible Text).
document.fonts.load(fontSpec) triggers loading of a specific font (e.g., 'bold 16px "Roboto"') and returns a Promise that resolves when that particular font is ready. document.fonts.ready, on the other hand, waits for all fonts on the entire page. Use .load() when you need to preload a specific font before using it; use .ready as a global "all fonts done" gate.
font-display: swap with the Font Loading API. Set font-display: swap in your @font-face rules so the browser uses a fallback font immediately. Then use document.fonts.ready.then(() => { ... }) to detect when the custom font arrives, and apply a class to re-render or adjust layout if needed. For critical text, you can also use document.fonts.load() early in the page lifecycle to pre-warm specific fonts before they are needed for rendering.
document.fonts) is supported in all modern browsers: Chrome 35+, Firefox 41+, Safari 10+, Edge 79+, and Opera 22+. It is not supported in Internet Explorer. For IE compatibility, you would need a polyfill or fallback approach (e.g., using the Font Face Observer library). You can feature-detect support by checking if (document.fonts && document.fonts.ready) { ... }.
FontFace constructor to create a font programmatically: const ff = new FontFace('MyFont', 'url(/font.woff2)', { weight: '700' });await ff.load() and document.fonts.add(ff) to register it. This is powerful for loading fonts on-demand without needing CSS @font-face declarations. The font becomes available immediately for rendering after being added to document.fonts.
Enumerate all fonts installed on your device and see a real‑time preview. Useful for design tools. Permission required.
Select a local font and see all its metrics: ascent, descent, x‑height, and supported features. Typography deep dive.
Paste a Base64 encoded font string and generate the complete @font‑face CSS rule. Inline small fonts easily.
Configure how your PWA launches: focus existing or create new. Test with the launch_handler manifest field.
Compress and decompress text using the browser's native Compression Streams API. See the binary output size.
Build a horizontal scroll‑snap container with configurable snap‑type and alignment. Perfect for image galleries.
Compare all CSS easing presets side by side on a bouncing ball. See which curve fits your UI animation.
Query the permission state of camera, microphone, geolocation, and more. See the response and learn the API.
Unified input demo: see pressure, tilt, and type from any pointer. Compare pointerType values. Essential for drawing apps.
Toggle a screen wake lock to prevent the device from dimming or sleeping. See the lock state and learn the API.
Decode an image progressively using the ImageDecoder API. See partial results and metadata. Modern alternative to <img>.
Decode individual video frames from a local file using the VideoDecoder API. Step through frames. Cutting‑edge browser feature.
Experiment with the Federated Credential Management API. Simulate a sign‑in flow without third‑party cookies. Privacy‑first.
Request HID devices and list them. Read input reports and send output. For custom hardware and controllers.
Request permission and detect when the user is idle (away from keyboard). See screen lock state. For native‑like apps.
Demonstrate how the Web OTP API automatically reads one‑time codes from SMS (mobile). Simulation with a fake SMS input.
Acquire and release locks across tabs. Prevent race conditions in IndexedDB or localStorage. Visual queue and lock state.
Register a periodic background sync to fetch fresh data even when the tab is closed. Understand the API and limits.
Connect a gamepad and see all button presses and axis movements visually. Check that every input is detected correctly.
Trigger different vibration patterns on mobile devices. Test if your phone supports haptic feedback. Simple demo.
Display your effective connection type (4g, 3g, etc.) and downlink speed using the Navigator API. Adapt your app accordingly.
See your device's battery level, charging status, and discharge time using the Battery Status API. Fun utility.
Check current screen orientation and test the lock API. Useful for mobile web apps. Demo with code.
Test the Fullscreen API: request fullscreen on a colored div, detect changes, and copy the JavaScript boilerplate.
Test the new HTML popover attribute for creating accessible tooltips, menus, and dialogs without JavaScript. Copy code snippets.
See the View Transitions API in action. Cross‑fade and morph between two states. Copy the JavaScript starter code.
Experiment with the Async Clipboard API: read/write text and images from the clipboard. Verify permissions and see demo code.
Test the Web Share API by sharing text, links, and files directly from the browser. Check compatibility and see example code.
Enter an API URL and quickly check its HTTP status code and response time. See response headers and body. Browser fetch.
Pick a method, URL, headers, and body, then send an HTTP request directly from your browser. Debug APIs easily.