A single web page that turns a phone, tablet or laptop into a chord keyboard — five touch pads, thirty-one letters, one finger combination at a time. Now also a Bluetooth keyboard and mouse for any computer in earshot. Free, offline, yours to keep.
A chord keyboard types whole letters with combinations of finger presses, the way a piano types whole notes with combinations of keys.
The idea isn't new. In 1978, Cy Endfield's Microwriter let writers compose at speed using only one hand — five buttons, memorised by feel. Forty-seven years later, SiWriter ports that idea into a single HTML file you can save, share, AirDrop, or pin to your home screen. No app store, no account, no telemetry.
One finger is the thumb (Space). Four are the fingertips (E, O, S, U). Press them in combination and the chord becomes a letter the moment your last finger lifts. After an evening's practice you'll be typing words. After a week, you'll be writing.
Chording is to the keyboard what shorthand was to the pen — once your hand learns it, your thoughts run faster than your fingers.
Why a single HTML file? Because the simplest things last longest. SiWriter has no server, no build step, no dependencies you don't already have. Open it in any browser made in the last decade and it just works. Save it to a USB stick and it'll still work when the cloud has long since moved on.
SiWriter 2026 has two modes, and which one you're in is decided by how you're holding the device. Rotate the phone, change modes. There's no button.
Hold the phone sideways. Five pads spread across the top of the screen, controls (CAPS, NUMS, DEL) on the left. Press finger combinations; release to type. The pads are large, the layout is adjustable, and your hand learns it in an afternoon.
Hold the phone upright. The chord pads disappear; the text fills the screen, and the iOS keyboard slides up. Use it to fix a typo, select a sentence, paste from somewhere else — anything you'd normally do in Notes. Portrait is also where the optional 🖱 trackpad lives — see § 06.
Both modes write into the same document. Type a paragraph in landscape, twist to portrait to fix a comma, twist back to keep going. The cursor stays where you left it. Nothing converts, nothing uploads, nothing reformats.
SiWriter sits on top of three browser systems that don't always agree with each other: touch events, screen rotation, and the iOS keyboard. Occasionally a tap is missed, a pad sticks, or the keyboard refuses to dismiss. Twist the phone — landscape to portrait and back. The mode change forces a clean redraw and almost always clears the gremlin.
No text is ever lost. Every chord, every keystroke, every fix is written to your current article the moment you make it. Close the tab, lose Wi-Fi, drop the phone, switch hands, sign out — when you come back, your document is exactly as you left it.
SiWriter doesn't have files; it has articles. Every session writes into the current dated article automatically, with a timestamp marking where you came back to it. The visible buffer at the top of the screen shows just the last sentence — that's deliberate, so you can see the line you're chording without distraction — but the whole article is always there underneath.
Open Menu → Articles to see the full list. From there you can rename, edit, copy to clipboard, transfer or share via the OS share sheet, save the visible buffer as its own article, or delete the lot. Menu → New Article starts a fresh dated one whenever you want a clean slate. Articles are stored per user, locally, with no expiry.
The first time you open SiWriter 2026, every pad is in a row at the top of the screen. That's not the layout — that's the starting position. The next minute is yours.
Tap the ⚙ menu icon in the top-right corner of the screen. The menu lists every customisation option SiWriter supports — pads, voice, hand, background, articles, Bluetooth.
Pick Adjust Pads from the menu. The screen dims and every pad becomes draggable. Take your time.
Hold the phone the way you'd actually use it, then drag each pad to the spot where that finger naturally rests. Thumb, index, middle, ring, little — slide them around until your hand sits over them without strain.
Drag the bottom-right corner of any pad to change its width and height independently. Bigger for the index if you press hard, smaller for the little finger if it's awkward — every pad is sized on its own.
When you're happy, tap Done. Your layout is saved automatically against your sign-in name. Tap Set Default in the same panel and that layout becomes the starting point every time you sign in on this device — or leave it as it is and the row-at-top default returns next time.
Most people don't hold a phone perfectly square. Pick Menu → 🎯 Rotate Pads, drag the slider to any angle (presets at 0°, 90°, 180° and -90° if you prefer a clean number), and tap Save. The eight chord pads — 1 to 5 plus Caps, Nums, Del — pivot together around their shared centre. The text box, menu and chord display stay upright, so your reading surface doesn't move. Saved per user, alongside your other layout choices.
Personal pad placement can take a while to get right — try a layout for a paragraph or two, twist to portrait to read what you wrote, then twist back and adjust. Everything is saved under your login name, so you can sign out, change devices, sign in again, and pick up where you left off. There's no commitment.
Each cell shows a character and the finger combination that produces it. Filled circles are pressed pads. Read left to right: thumb, index, middle, ring, little.
Modifiers. CAPS shifts the next letter (or all letters, if double-tapped). NUMS switches to the numeric layer. CAPS + NUMS together unlocks the symbol layer above. DEL removes the last character. Everything else is muscle memory.
Lay out for either hand and the entire keyboard mirrors. Adjust each pad to the spot your fingertip naturally rests, then resize it to taste. The layout saves per user.
Hear what you've written, word by word or sentence by sentence. Use the device's built-in voice or plug in an ElevenLabs voice clone of your own.
Everything you chord is also synced to the system clipboard, so a long-press → Paste in any other app drops your text there ready to send.
Sign in with a name and your text, pad positions, and preferences stay with you across sessions. Add a custom background image to make it your own.
Add to Home Screen on iOS or Android and SiWriter behaves like a native app — full-screen, offline, with its own icon.
The entire program is a single HTML document. Open it from a server, a USB stick, or an email attachment — it doesn't care.
Tilt the eight chord pads — fingers 1-5 plus Caps, Nums and Del — to any fractional angle so they line up with the way you actually hold the phone. Saves per user.
A small Wi-Fi+BLE bridge (Pico W, ESP32 or M5StickC Plus — your choice) lets SiWriter type into any computer it's paired to over Bluetooth. The Mac sees a normal wireless keyboard. See § 06.
Portrait-only trackpad surface drives the same paired computer. One-finger drag = move, tap = click, two-finger tap = right-click, two-finger drag = scroll. Adjustable sensitivity. Hidden in landscape so chording is never interrupted.
The bridge tries every Wi-Fi network you list at boot — home, work, hotspot — and joins the first one reachable. If none are, it falls back to its own access point. Wherever you go, the keyboard goes with you.
SiWriter 2026 will speak each word, or each sentence, the moment you finish chording it. The device's built-in voice works fine — but if you used to have a voice that doesn't sound like you any more, there's a better option.
elevenlabs.io can build a clone of your voice from any recording you already have — an old answerphone message, a wedding toast, a podcast appearance, a home video. Anything from before your voice changed. Upload the recording, follow their instructions to make a voice, and the service gives you two things: an API key and a Voice ID.
In SiWriter, open Menu → Speech (top-right ⚙ menu), pick ElevenLabs Clone as the engine, paste the API key and the Voice ID into the two fields, then choose Speak each word or Speak each sentence. From the next chord onward, what you write comes out in the voice you used to have.
I know it works because that's why I wrote this part. Thyroid cancer, in my case. If you or someone you love is in the same place — voice gone, or going — try it. The clone is not perfect. It is, however, recognisably you, and after a while that matters more than perfection.
A note on the moving parts. ElevenLabs is a paid third-party service (with a small free tier). SiWriter never sees your key — it sits in the browser's local storage on your device and is sent directly to ElevenLabs when speech is requested. You can change or remove the credentials any time from the same Speech panel.
SiWriter has two complementary modes that look identical but behave differently. The page you open decides which one you get.
The familiar single-page web app. Open it from anywhere with internet, sign in, chord into the local buffer. Articles, speech, clipboard, recordings all work. The Bluetooth-keyboard relay does not work in this mode because browsers refuse to make plain-HTTP requests from an HTTPS page (mixed-content blocking).
The same SiWriter HTML, but served by the bridge itself over plain HTTP. Because the page and the keyboard API live on the same origin, the browser allows the Bluetooth-keyboard and trackpad features. Internet isn't needed — the phone is on the bridge's own Wi-Fi.
First-time bridge setup. After this you can skip to step 5 every time.
Pico W, ESP32 or M5StickC Plus — each firmware folder has its own README walking you through Arduino IDE or CircuitPython install. Plug in, upload, done.
On the Mac/PC: System Settings → Bluetooth → look for
SiWriter Remote → Pair. No PIN. From this point
on the computer treats the bridge as a normal wireless
keyboard.
Every time you power the bridge it advertises a Wi-Fi
network called SiWriterWiFi at
192.168.4.1. No password by default. The M5's
LCD shows this; the plain ESP32 prints it to USB serial.
iPhone/iPad → Settings → Wi-Fi → SiWriterWiFi →
Join. Accept "no internet" if it asks — that's expected. The
bridge isn't a router, it's just a relay.
Safari/Chrome → http://192.168.4.1/. SiWriter
loads served directly from the bridge. Sign in or continue
as guest.
Menu → 🅱 Bluetooth Keyboard → tick
Send keystrokes to keyboard. Tap Test
connection — should say BLE connected.
Tap Send "Hello!" to confirm it types on the Mac.
Everything you chord from now on appears on the Mac. Rotate to portrait to get the optional 🖱 trackpad. Rotate back to landscape to chord again. Power the bridge off when done — your last layout, articles and recordings all stay saved.
After the first run, only steps 4–7 matter day to
day: phone joins SiWriterWiFi → browse 192.168.4.1 →
chord. Bookmark the bridge URL on your home screen alongside the
online one, and you can switch modes in two taps.
A small piece of hardware — about £6, the size of a coin — lets SiWriter act as a real Bluetooth keyboard and mouse for any computer in the room. The Mac, PC or iPad sees a normal wireless keyboard. It has no idea a phone is in the loop.
The phone never tries to be a Bluetooth keyboard itself — Apple and Google both reserve that role for the operating system. Instead, the bridge does it: a tiny board that joins your Wi-Fi, accepts HTTP requests from SiWriter, and converts them into Bluetooth HID keystrokes (and mouse moves) that the paired computer takes at face value. Pair the bridge once from your laptop's Bluetooth settings, and after that it just types.
Pick whichever board you can get hold of cheapest. The firmware speaks the same JSON API on all three, and SiWriter's Menu → 🅱 Bluetooth Keyboard panel drives them identically.
The cheapest and smallest. Drag-and-drop firmware install via the CIRCUITPY drive. Built-in BLE, built-in Wi-Fi.
The classic. Any board with the original ESP32 chip works (DevKit V1, WROOM-32, S3, C3 …). Flashed from Arduino IDE.
The premium choice. Built-in colour LCD shows live BLE status, Wi-Fi network, IP and keystroke counter. Has a battery too — it runs untethered for hours.
Tick Mouse mode in the Bluetooth Keyboard panel and adjust the sensitivity slider. A floating 🖱 button then appears in the bottom-right — but only when the phone is in portrait, never in landscape. The chord keyboard is never disrupted.
Tap 🖱 to open a full-screen trackpad surface. One-finger drag moves the cursor. A short tap is a left click. Two-finger tap is a right click. Two-finger drag scrolls. Dedicated Click / R-Click / Done buttons sit along the top.
The same paired BLE device acts as both keyboard and mouse — one Bluetooth pairing, two transports.
The bridge firmware accepts a list of Wi-Fi networks (home, work, café, phone hotspot…). At boot it tries each in order and joins the first one reachable. If none are, it falls back to its own access point, SiWriterESP32, on 192.168.4.1 — so the bridge is always usable as a self-contained device too, even off-network.
Why is the iPhone never the Bluetooth keyboard itself? Three reasons. (1) iOS doesn't expose a public API for an app to act as a Bluetooth HID peripheral. (2) Web browsers on iOS have no Bluetooth API at all — all use WebKit, which deliberately omits Web Bluetooth. (3) An iPhone is already in the host role for its own Bluetooth keyboards; combining host and peripheral on one device isn't supported. The bridge sidesteps all three.
Two downloads. The SiWriter HTML on its own — or the full bundle with all three firmware sketches and a README — if you're going to build a bridge.
Just the chord keyboard. Open in any modern browser. Optionally, host it somewhere — a free GitHub Pages or Netlify Drop URL — so you can Add to Home Screen and use it offline like a native app.
Everything in one zip: SiWriter HTML plus all three firmware folders (Pico W, ESP32, M5StickC Plus) and a top-level README listing the shared HTTP API and what's new in this release.
↓ Download zipIf you'd rather grab a single firmware folder, all three are inside the zip. Each ships with its own README walking you through pairing, Wi-Fi setup, and the Arduino IDE / Thonny steps to flash.
• pico_bt_keyboard/
• esp32_bt_keyboard/
• m5stickc_plus_bt_keyboard/
Pick the one that fits how you work. The first is fastest, the third gives the best on-phone experience.
Click Launch SiWriter at the top of this page. It runs in any modern desktop or mobile browser. Closing the tab loses the session, so this is best for quick tries.
Drop the HTML on a free static host — Netlify Drop, GitHub Pages,
Cloudflare Pages — and use the resulting https://…
URL. On iPhone / Android, open it in Safari or Chrome and tap
Share → Add to Home Screen. From then on it runs full-screen
and offline, with its own icon.
You can save the file to disk and double-click it. Note: on iPhone, opening an HTML attachment goes through iOS Quick Look, which doesn't deliver tap events to the page. Use the Documents by Readdle app (free) to open local HTML on iOS properly — or just host it once and add it to your home screen.
Optional. Buy a Pico W, ESP32 or M5StickC Plus. Flash the matching firmware from the zip (Arduino IDE for ESP32 / M5, drag-and-drop CircuitPython for Pico W). Pair it from your computer's Bluetooth settings — it advertises as SiWriter Keyboard. In SiWriter, open Menu → 🅱 Bluetooth Keyboard and tick Send keystrokes to keyboard. Done.
You wouldn't, on a desktop. SiWriter is for places a keyboard can't go — on a phone in landscape, on a wrist, on a one-handed accessibility setup, or when your other hand is doing something else (driving a wheelchair, holding a cup of tea, balancing a book). It's also a useful exercise in muscle memory: chording forces a different relationship with text than tapping ever does.
An hour to type a sentence. A week to type fluently. Forever, if you want to chase top speed — Microwriter veterans clock 60 wpm, but most people plateau pleasantly around 30. The five most common letters (E, O, S, U, plus space on the thumb) are single fingers by design, so you start fast.
No. SiWriter is fully useful on its own — chording into its own text buffer, with everything copied to the clipboard automatically. The bridge is for when you want to type into another computer over Bluetooth, the way a wireless keyboard would. If that's not something you need, ignore § 06 entirely.
Three reasons stacked. iOS doesn't let apps be Bluetooth keyboards. Web browsers on iOS don't support Web Bluetooth at all. And the iPhone is already in the "host" role for its own Bluetooth keyboards, so it can't also be a "peripheral" — even if the first two limits didn't apply. The bridge sidesteps all three by being a small dedicated piece of hardware whose only job is to be a Bluetooth keyboard.
Nowhere — it's deliberately disabled. The 🖱 floating button only appears in portrait orientation, so landscape stays a pure chord keyboard with no risk of accidental mouse events. Rotate to portrait when you want to point at things; rotate back to landscape to chord. You can also turn Mouse mode off entirely in the Bluetooth Keyboard panel.
Twist the phone. SiWriter switches between chord mode (landscape) and edit mode (portrait) the moment you rotate, and the rotation forces the browser to redraw cleanly. That's almost always enough to clear whatever was confused. If it isn't, sign out and back in — your text is safe in the current article either way.
No. Every chord, every keystroke, every fix is written to the current article the moment you make it. Articles live in your browser's local storage, attached to your username, and survive tab closures, reboots, and sign-outs. The only way to lose them is to clear the browser's site data or delete them yourself from Menu → Articles.
Not directly — Apple and Google reserve that for native keyboard extensions. But if you have a Bluetooth bridge (§ 06), you can. The bridge looks to the computer like a normal wireless keyboard, and what SiWriter chords appears in whatever app has focus. Without a bridge, SiWriter copies your text to the clipboard automatically — long-press → Paste drops it anywhere.
In your browser, on your device. SiWriter has no server and no account. Sign-in is local — usernames just keep separate slates inside the same browser. Clear your site data and SiWriter forgets everything. The bridge similarly has no analytics — it's just a tiny HTTP server speaking BLE on the other end.
Yes. The HTML is the source — open it in any text editor and read the whole program. The bridge firmware lives in the three folders in the zip, all readable C++ or CircuitPython. There's nothing else.
SiWriter is and will stay free. If it has changed how you write — on a long flight, in a hospital bed, on a wrist where a keyboard doesn't fit — you can tip the maker through any of the platforms below. Every option goes directly to the developer; none of them require an account on your side.
A note on transparency. These buttons are plain links. There is no payment processor running on this page, no analytics, and no cut taken in transit — the platforms listed above charge their own (small) fees, but everything that clears lands in the maintainer's account.