What Are Pure HTML/CSS/JS Websites Capable Of?

Sometimes it's good to ask ourselves—as web developers—what a static, pure HTML/CSS/JavaScript site is capable of today. No server. No login. No database. No security issues. No downtime. No dependencies. Just pure code running in the browser. Vanilla or not.

It turns out, that's quite a lot. Modern browsers have evolved into powerful execution environments — JIT-compiled JavaScript, hardware-accelerated graphics, multithreaded workers, gigabytes of in-memory storage, direct hardware access, and even GPU compute. Tasks that historically required a heavy backend now run comfortably on the client. Here is a breakdown of eighteen categories of things you can build with nothing but front-end technology, each with a live demo or named real-world examples shipping today:


01 — Full-Blown Websites & Landing Pages

Plain HTML/CSS/JavaScript websites are the most obvious use case. Using modern front-end frameworks like Bootstrap, Tailwind, or static site generators (Astro, Eleventy, Hugo), you can build production-ready sites that are lightning-fast and essentially "immortal" because there is no server-side code to break. The page is just a file — and files don't crash.

Real-world examples: tailwindcss.com and its full documentation site, astro.build, svelte.dev, the entire Stripe Press book collection, react.dev docs, virtually every Y Combinator startup landing page, Apple's marketing pages, brutalistwebsites.com, almost every personal portfolio you'll find on Hacker News. GitHub Pages, Netlify, Cloudflare Pages and Vercel make these sites global-CDN-delivered, HTTPS-secured, and free up to generous limits — with literally 100% uptime SLA because there is no origin server to fail.
Live example — landing page preview
NOCTURNE® WorkAboutContact

Design beyond the obvious.

Pure HTML · CSS · JavaScript · Zero dependencies

View our work
100 ms load · 100/100 Lighthouse · 0 servers

02 — High-Performance Animations

The web is a perfect toolbox for everything from subtle micro-interactions to complex cinematic sequences. Using CSS keyframes, the Web Animations API, or libraries like GSAP, Motion One, Framer Motion, Anime.js, and Lottie, you can produce professional motion design without shipping a single megabyte of video. GPU-accelerated transform and opacity changes run at 60–120 fps on modern hardware. With scroll-timeline and view-timeline (now baseline in Chromium), scroll-linked animation works without JS at all.

Real-world examples: Apple's iPhone product pages (sticky scroll storytelling), stripe.com's subtle gradient + cursor effects, linear.app's landing-page transitions, vercel.com's shimmer hero, the Awwwards Site of the Day archive, Active Theory's interactive campaigns, Airbnb's animated illustrations, every Bruno Simon-style portfolio (bruno-simon.com), and Disney+ / Netflix marketing splash pages. Lottie's JSON-based After Effects exports power animations across Spotify, Uber, and Duolingo apps — same files run perfectly on web.
Live example — CSS animations
Spinner
CSS border-top
Pulse
scale + opacity
Slide
translateX loop
Morph
border-radius

03 — Browser-Only Gaming

The local development community for browser gaming is massive. Using the HTML5 Canvas API, WebGL, or WebGPU, you can build everything from puzzle games to fully 3D action titles that run entirely on the client side. requestAnimationFrame gives you a vsync-locked game loop, the Gamepad API talks to physical controllers, and Web Audio handles spatial sound. Game engines like Phaser, PixiJS, Babylon.js, and Unity/Godot/Unreal (via WebAssembly export) all target the browser as a first-class platform.

Real-world examples: Wordle (the original was 50 KB of static HTML/JS — no backend), 2048, agar.io, krunker.io, townscaper.com (Unity WebGL), doom.js ports, quake in WebAssembly at q1k3.com, the entire itch.io HTML5 catalogue, js13kgames.com entries (full games in 13 KB), Google's interactive doodles (Pac-Man anniversary, Halloween games), chess.com's analysis board, lichess.org (open-source, full chess server is optional — local play works offline). Indie hit A Dark Room began as a single HTML file.
Live example — Snake (click canvas or use arrow keys)
Score: 0 — Click or press arrow keys to start

04 — Standalone Web Applications

This includes tools that solve specific problems instantly: template generators, complex calculators, schedule planners, cost simulators, color tools, regex builders, code playgrounds. These apps take input and generate output entirely within the browser's memory — no round-trip to a server, no waiting, no privacy concerns, no rate limits, no subscriptions.

Real-world examples: regex101.com (regex testing), jsonformatter.org, caniuse.com, tinypng.com, coolors.co (palette generator), jwt.io (token debugger — claims it never leaves your browser, and you can verify that in DevTools), cssgradient.io, squoosh.app, removebg alternatives running locally via ONNX, excalidraw.com (entire whiteboard app, all data in browser), tldraw.com, diagrams.net when used in browser-only mode, the entire 1Loc.dev snippets directory, mortgage/loan/tax calculators on every bank and government site.
Live example — mortgage calculator
€1,342/mo
Loan amount€280,000
Total paid€402,600
Total interest€122,600

05 — Media Manipulation & Image Processing

This is one of the most powerful modern capabilities. Using JavaScript with the Canvas API, Fabric.js, or Pica, you can build tools that perform heavy lifting on media directly in the browser. Files never leave the user's machine:

Real-world examples: squoosh.app (Google's image compressor — multi-codec including WebP, AVIF, JXL via WASM), photopea.com (a full Photoshop clone in the browser, with PSD support), removebg.app-style background removers running on-device, tiny.pictures, realfavicongenerator.net, QR generators like qrcode-monkey, pdf.js (Mozilla's PDF renderer, used in every Firefox install), mp4box.js for muxing video, ffmpeg.wasm for full video editing in-browser, audiograms and waveform visualisers on podcast players. Figma itself renders its entire UI via WebGL + WASM.
Live example — CSS filter playground

06 — Real-Time API Integrations

By using fetch(), a static site becomes a window to the world. Weather apps, finance dashboards, and map integrations allow you to display dynamic data while keeping your hosting architecture static and secure. The browser handles all the HTTP calls — your "server" is just a CDN delivering a file.

Real-world examples: flightradar24-style trackers built on OpenSky's free API, marinetraffic mirrors, github-readme-stats embeds, shields.io badges, currency converters using exchangerate.host, weather dashboards built on Open-Meteo (no API key, like the demo below), live earthquake maps via USGS GeoJSON, ISS-tracker pages, election-night dashboards (NYT, FT, Bloomberg all use heavily static front-ends backed by JSON drops), caniuse.com's data feed, npmtrends.com. Public-data dashboards from the EU, UK ONS, and US Census Bureau are all browser-rendered.
Live example — real weather data via Open-Meteo (no API key needed)
Fetching weather for Brussels…

07 — Local-First Productivity Tools

With APIs like localStorage and IndexedDB, you can build "no-database" apps. Users can create Kanban boards, markdown editors, or technical layout designers (like stage plot builders) where the data stays strictly on their machine, ensuring 100% privacy.

Real-world examples: excalidraw.com (drawings stored locally + optional E2E-encrypted share), tldraw.com, stackedit.io (markdown editor), dillinger.io, actualbudget.com's web client (envelope budgeting, IndexedDB-backed), browser-only habit trackers like habitkit, anki-style flashcard apps (e.g. mochi.cards web), logseq.com (knowledge graph in IndexedDB), the localfirstweb.dev showcase, password managers' "local vault only" modes. With the new Origin Private File System (OPFS), apps can store gigabytes of data with no quota prompts. The user owns every byte.
Live example — Kanban (saved to localStorage, drag between columns)

Data saved in your browser · nothing leaves your machine

08 — Data Visualization & Reporting

D3.js, Chart.js, and Observable Plot turn raw data — even a CSV dragged into the browser — into interactive charts, maps, and dashboards. This goes beyond API integrations: the data is local, the compute is local, and the output is local. Drop a spreadsheet in, get a publishable chart out.

Real-world examples: The New York Times's "The Upshot" and "Snowfall"-style scrollytelling pieces, The Guardian's data interactives, Pudding.cool's entire essay catalog (all D3/Observable, all static), Our World in Data charts, FiveThirtyEight's forecast visualisations, Observable notebooks, flourish.studio embeds, datawrapper.de charts, every COVID dashboard you saw in 2020 (JHU, ECDC, FT) — none of them needed a back-end to render. Scientific Jupyter notebooks now publish straight to web via JupyterLite running fully in-browser.
Live example — inline SVG bar chart (pure JS, no library)

09 — Audio & Music Tools

The Web Audio API is surprisingly powerful. You can build in-browser synthesizers, drum machines, tuners, metronomes, chord finders, and even basic DAW-style sequencers — all as pure front-end apps. The API gives you oscillators, filters, envelopes, and audio routing graphs, all running on the device's own audio hardware.

Real-world examples: learningmusic.ableton.com and learningsynths.ableton.com (Ableton's tutorial sites are full working DAWs), onemotion.com/chord-player, onlinesequencer.net, chrome.com/music-lab (Google's Song Maker, Spectrogram, Kandinsky), soundtrap.com, bandlab.com (browser-based DAW), noises.online for white-noise mixes, fender.com's online tuner, theremin.io, the Endless Acid Banger, patatap.com. Tone.js powers many of these — and Audio Worklets give sample-accurate timing for serious music apps.
Live example — Web Audio API synthesizer (click keys or use keys A–K)

10 — Augmented Reality & Camera Tools

Using the MediaDevices API, you can access the device camera and build QR scanners, document scanners, color pickers, or face filters — all without any upload. Frames from the video stream flow directly into a Canvas element where you can manipulate them pixel by pixel. The file never hits a server.

Real-world examples: webqr.com and qrcode.show's scanners (used at SNCF, Lufthansa and KLM boarding-pass kiosks running in kiosk-mode Chrome), banuba.com and jeeliz.com's in-browser face filters and try-on, Warby Parker's virtual glasses try-on, Sephora's color matcher, 8thwall.com-powered web AR campaigns (Coca-Cola, Heineken, Sony), barcode scanners on supermarket self-checkout PWAs, document-scan apps that auto-detect edges and correct perspective with OpenCV.js, posture trainers using mediapipe's pose estimation. The whole "WebAR" industry exists because no app install is needed.
Live example — camera with CSS pixel filters (requires camera permission)

11 — Offline-First PWAs

With Service Workers and the Cache API, a pure HTML/JS site can function with zero connectivity after the first load. That's a fundamentally different capability from simply storing data in localStorage — the entire application shell, assets, and data are served from the browser's own cache. This is how mobile apps work; now the web can do it too.

Real-world examples: Twitter's installable PWA (the entire twitter.com works offline as a web app on phones), Starbucks' PWA (rolled out specifically because the native app was too heavy for emerging-market devices, cut download size by 99.84%), Pinterest's PWA boosted ad revenue +44%, Tinder's PWA loads in 4.69s on 3G vs 11.91s native, Spotify's web player, Microsoft Office web apps, Google Drive, the Kiwix offline Wikipedia reader (carries the full English Wikipedia in your browser), AliExpress' install-on-homescreen PWA, BMW.com's launchable PWA. Even YouTube Music and Photoshop on the web are installable PWAs that run offline once cached.
Live example — what a Service Worker caches
Online

Connection:

index.html (application shell)
app.js (main bundle)
styles.css
/api/data.json (last fetch cached)
assets/logo.svg

12 — Cryptography & Privacy Tools

The Web Crypto API lets you encrypt, decrypt, generate key pairs, and hash data entirely in the browser. Password managers, secret-sharing tools, and end-to-end encrypted notes can be built with zero server trust. The math happens on the user's hardware — no data ever leaves unless they choose to send it.

Real-world examples: Bitwarden and 1Password web vaults (AES-256 in browser, server only sees encrypted blobs), age browser ports, cryptii.com, privatebin.info (zero-knowledge pastebin), send.tresorit.com end-to-end-encrypted file transfer, magic-wormhole browser ports, WebPGP, passbolt's browser client, Signal's web client (libsignal compiled to WASM), Proton Mail's web client (all decryption client-side — Proton can't read your email even if they wanted to), TOTP authenticators like 2fauth and authy-web alternatives. The math happens on the user's hardware — no data ever leaves unless they choose to send it.
Live example — SHA-256 hashing via Web Crypto API

13 — Real-Time 3D Graphics & WebGL/WebGPU

The browser ships with a programmable GPU pipeline. WebGL (now baseline everywhere) and the newer WebGPU (Chrome, Edge, Safari Tech Preview) give JavaScript direct access to vertex/fragment shaders, compute shaders, and the same rendering primitives as native engines. Libraries like Three.js, Babylon.js, PlayCanvas, and react-three-fiber handle the heavy lifting.

Real-world examples: bruno-simon.com (an entire 3D portfolio with drivable car), github.com/skeeto's globe, maps.google.com's 3D Earth view, shadertoy.com (fragment-shader art gallery), poimandres.github.io/spline, akella.org demos, NASA's eyes.nasa.gov solar-system viewer, sketchfab.com embedded 3D models, matterport.com virtual property tours, the entire readyplayer.me avatar customiser, Tesla's car configurator, IKEA's Kreativ room scanner, AutoCAD Web, OnShape, the entire WebGPU 1.0 demo gallery (fluid sims, ray tracers, neural-net visualisations).
Live example — WebGL spinning cube (drag to rotate)
— fps

14 — WebAssembly & Near-Native Performance

WebAssembly (Wasm) is a portable binary format that runs in browsers at near-native speed — typically 2–10× faster than equivalent JavaScript for compute-heavy work. C, C++, Rust, Go, Zig, AssemblyScript, even Python (Pyodide) compile to it. Wasm is the reason Figma, Photoshop on the web, AutoCAD Web, and Google Earth web can exist at all. It also means decades-old C codebases — ffmpeg, ImageMagick, SQLite, libtiff, OpenCV — run untouched in a browser tab.

Real-world examples: figma.com (C++ rendering engine compiled to Wasm, ~3× faster than the JS version they started with), photoshop.adobe.com/web (full PS compiled from C++), autodesk.com's AutoCAD Web, 1password.com (Rust crypto compiled to Wasm), Google Earth on the web, sql.js and SQLite WASM (run a full SQL database in browser), pyodide (CPython 3.11 in browser — full NumPy, Pandas, scikit-learn), ffmpeg.wasm, OpenCV.js, libheif.js, the entire Disney+ streaming UI partly Wasm, Doom 3 compiled to Wasm. Microsoft's Blazor compiles C# to Wasm for full-stack .NET in the browser.
Live example — JS vs WebAssembly (Fibonacci benchmark)
Click "Run benchmark" to compare a naïve recursive Fibonacci in pure JS vs the same algorithm compiled to WebAssembly.

15 — Peer-to-Peer Communication (WebRTC)

WebRTC turns two browsers into directly connected peers — audio, video, and arbitrary binary data flow between them with no server in the middle (other than a tiny "signalling" step to exchange connection info, which itself can be a QR code or a copy-paste). It's the same protocol stack Google Meet, Discord voice, and WhatsApp Web calls use under the hood.

Real-world examples: meet.jit.si (Jitsi — fully open-source video conferencing, runs from a static page), whereby.com, Google Meet, Microsoft Teams calls, Discord voice/screen-share, Facebook Messenger calls, wormhole.app (end-to-end-encrypted file transfer, peer-to-peer), filepizza.com (drag-and-drop file send, no upload), snapdrop.net (AirDrop for the web), instant.io (WebTorrent in browser), the Pion ecosystem, OBS browser-source streaming, jackbox.tv's controller phones, online co-op games signalling over WebRTC data channels.
Live example — peer connection state (loopback in this tab)
// Click the button to negotiate two RTCPeerConnections in this tab and send data over a peer-to-peer DataChannel.

16 — Local File System & Drag-and-Drop

The HTML5 File API has long allowed drag-and-drop and <input type="file">. The newer File System Access API (Chrome, Edge, Opera) goes further: a web app can request a read/write handle to a real folder on disk, persist the handle across sessions, and edit files in place. This is what makes VS Code for the Web, Photopea, and StackBlitz feel like real desktop apps.

Real-world examples: vscode.dev (Visual Studio Code editing your local folders), stackblitz.com, codesandbox.io, excalidraw.com's save-to-disk, photopea.com's "Open from disk" and "Save back" workflow, squoosh.app, tldraw.com's file mode, jsoncrack.com, tinypng drag-zone, the Whisper Web transcription tools that read your audio files locally. Origin Private File System (OPFS), now in all major browsers, lets apps store gigabytes of opaque data with near-native I/O speed.
Live example — drag files in (or click) to read them locally
Drop files here · or click to choose

17 — Device & Hardware Access

Modern browsers can talk to physical hardware directly: Bluetooth LE devices, USB peripherals, serial ports, MIDI controllers, gamepads, motion sensors, ambient light sensors, geolocation, screen wake lock, vibration motors, even NFC tags on Android. Most of these were exclusive to native apps a decade ago.

Real-world examples: web.dev/bluetooth demos controlling Lego Mindstorms and Philips Hue bulbs, chrome.com/web-bluetooth heart-rate monitors, Arduino IDE 2's WebUSB-based flasher (arduino.cc/en/software's online editor), espruino.com/ide, flipper-tools.com (firmware updaters for Flipper Zero in browser), webmidi.js-based DAW controllers, controllertest.com for gamepads, shapesensor.com running motion sensors, Google Stadia's gamepad pairing, printer.web.app for receipt printers, fitness apps reading bike power meters over BLE, retail point-of-sale systems running entirely in Chrome.
Live example — what this browser exposes about your device

18 — On-Device AI & Machine Learning

This is the newest frontier and arguably the most surprising. Real neural networks — LLMs, image classifiers, speech-to-text, object detection — now run inside the browser tab using WebAssembly + WebGPU. No cloud GPU bill, no data leaving the device, no API key. Libraries like TensorFlow.js, Transformers.js (Hugging Face's port of the Python library), ONNX Runtime Web, and Web LLM (MLC) make this almost plug-and-play.

Real-world examples: webllm.mlc.ai running Llama 3 8B at usable speeds in Chrome (no server), huggingface.co/spaces Transformers.js demos (sentiment, summarisation, translation, image generation, depth estimation), whisper-web (OpenAI Whisper speech-to-text running locally), Google's on-device Gemini Nano exposed via the window.ai API in Chrome, mediapipe's hand/face/pose detection (used in Zoom backgrounds, fitness apps), tensorflow.org/js's body-pix and pose-net demos, removebg alternatives using ONNX U-2-Net, real-time style transfer at magenta.tensorflow.org/demos, autocomplete and grammar tools running fully client-side (e.g. Type Studio's local mode), the entire fal.ai client-side image-gen line-up. Browser AI now performs many tasks that previously required round-trips to OpenAI.
Live example — draw a digit (0–9), the browser tries to recognise it
Draw a digit and click Recognise. The classifier is a small 4-feature heuristic running 100% in this browser tab — a real CNN (MNIST in TensorFlow.js) would weigh ~400 KB and give ~99% accuracy.

The Verdict

Building "static" doesn't mean building "simple". With WebAssembly, WebGPU, peer-to-peer networking, direct hardware access, and on-device AI, the browser has quietly become one of the most capable runtimes ever shipped. By removing the server, you eliminate the biggest point of failure, the biggest security surface, and the biggest recurring cost — and you hand control back to the user's hardware.

Eighteen categories. One HTML file. Zero servers. The next time you reach for a backend, ask: does this really need to leave the browser?