A Webstarted Toolbox widget · macOS & Windows

Read to camera without losing your thread.

Paste your script — or load a .txt — and it scrolls itself at the speed you actually read, set in words per minute rather than pixels. It tells you how long the script runs and how much is left, mirrors for a glass rig, and never sends your script anywhere.

Already have Toolbox? Open this widget

Free · No account · 100% offline · Installs from the Toolbox catalog
Words per minuteA speed you know about yourself
Several scriptsSwitch, rename, autosaved
Mirror modeFor beam-splitter glass rigs
Fully offlineThe script never leaves the machine
How it works

Paste it, press play, talk.

Write the script in the widget, paste it from wherever you drafted it, or load a .txt or .md from disk. It autosaves as you type — no save button to forget — and it keeps as many scripts as you want behind a selector, each with its own running time, so “launch video”, “podcast intro” and “demo walkthrough” all live in the same place.

Then it is play, pause, and back to the top. The reading band marks the active line so your eye has somewhere to sit, and the column width and font size are adjustable, which together are what stop you from skipping a line on a wide screen. Change either one mid-read and it keeps your place rather than throwing you back to the top.

Most people run it in its own window — that is what it is sized for, and it is the sane place to put it if the camera is where your screen used to be. In the popover it works too, for a quick read-through before you hit record.

  • Paste, type, or load a .txt / .md
  • Several scripts with a selector — rename, delete, autosaved
  • Play, pause, back to the top; tells you when the script ends
  • Reading band, column width, font size, mirror
  • Its own window at 440×560, or right in the popover
Words per minute

Pixels per second is a setting nobody can guess.

Every teleprompter needs a speed control, and most of them expose it in the unit the code happens to use: pixels per second, or an unlabelled 1-to-10 slider. Both are unguessable. Worse, they are not stable — the same pixel speed crawls in a large font and races in a small one, so every time you resize the window you are back to trial and error.

Words per minute is a number you can reason about: a relaxed read-aloud pace lands around 130–150 wpm, and if you have ever been told you talk fast, you can just set it lower. To honour it, the widget measures the real height of your script as it is laid out right now and shares that height out among its words. The pixel speed is derived from your wpm, not the other way round — which is why 130 wpm reads the same in the popover as it does in a full window.

The same measurement produces the footer: how long the script runs and how much is left. One calculation, so the clock and the scroll can never disagree.

  • Speed in wpm — 130–150 is a comfortable read-aloud pace
  • Stable across font size, column width and window size
  • Duration and time-left come from the same measurement as the scroll
  • Word count per script, so you can trim to fit a slot
Words/minPixels/sec
You can guess a starting value
Stable if you change font size
Stable in a bigger window
Matches a rehearsal timing
Gives you a duration
Coming from a web teleprompter?

The script is almost always the part that isn’t public yet.

Think about what goes into a teleprompter: an announcement that has not gone out, a pitch, a product video still under embargo, a customer story with a real name in it. Pasting that into a browser tab means handing it to whoever runs the site — and the free ones are ad-supported, which tells you what the business model is.

This is the same workflow with the upload removed. It is not the most feature-packed teleprompter in the world and does not pretend to be: what it is, is free, offline, one keystroke from wherever you already are, and honest about the speed setting.

  • No upload, no account, no sign-up wall, no ads
  • Works on a plane, in a studio with no Wi-Fi, or with the network off
  • Lives in the menu bar instead of a tab you have to keep finding
  • Speed in wpm, and a duration you can trust
TeleprompterWeb tools
Script stays on your machine
Works offline
Ads / trackersNoneCommon
Mirror mode
Speed in wpmRare
Voice-following scrollSome
Remote control from a phoneSome
PriceFreeFree tier / paid
What it doesn’t do

Three things it’s missing, and why.

Better you read this here than discover it ten minutes before a shoot.

No always-on-top float

You can open it in its own window, but that window does not yet stay above everything else. Pinning a window on top is something the app’s core has to grant, not something a widget can take for itself — so it is waiting on that capability rather than faking it.

No global play/pause hotkey

System-wide shortcuts are registered by the app shell, which keeps a short, deliberate allowlist — an installable widget quietly claiming a key combination across your whole machine is not a thing that should be easy. Play and pause live in the widget.

No voice-following scroll

Dropped on purpose. macOS’s web view does not implement speech recognition at all, and on Windows the available one ships your microphone audio to a cloud service — which would break the single promise this widget makes, that the script and your voice stay on your machine.

Part of Webstarted Toolbox

Installed from the catalog, in one click.

Teleprompter isn’t bundled into the app — it’s a widget in the Webstarted Toolbox catalog. Download Toolbox, open the catalog tab (🧰), press the “+” next to Teleprompter, and it lands in your Focus tab. Here are a few of its neighbors:

FAQ

Questions, answered.

Why is the speed in words per minute instead of pixels or a 1–10 slider?

Because words per minute is a speed you can actually know about yourself, and pixels per second is not. A comfortable read-aloud pace is somewhere around 130–150 wpm; nobody knows what 40 pixels a second feels like, and worse, the same pixel speed reads completely differently depending on the font size and the width of the column. So the widget takes your wpm, measures the real height of your script as it is laid out on screen right now, and divides that height among the words in it. Change the font size or the window and 130 wpm still reads as 130 wpm.

Is the “runs 1:53” estimate the same number that drives the scroll?

Yes, and that is the point. It is one calculation, not two: the duration you are shown and the speed the text moves at come from the same measurement, so the countdown cannot drift away from what is actually happening on screen. If it says you have 1:02 left, you have 1:02 left. Plenty of teleprompters show an estimate computed one way and scroll at a speed set another way, and the two quietly disagree by the end of a long script.

Does my script get uploaded anywhere?

No. The whole thing runs locally inside the widget: no account, no server, no sync. Turn the Wi-Fi off and it works exactly the same. That matters more than it sounds for this particular tool, because a script is usually an unreleased announcement, a pitch, a video that has not gone out yet, or something with a client name in it — precisely the text you should not be pasting into a website.

Can I load a script from a file?

Yes — paste it in, or load a .txt or .md straight from disk. It keeps several scripts with a selector so you can switch between them, tells you how long each one runs, and autosaves as you type, so there is no save button to forget. You can rename or delete any of them.

Does it have mirror mode for a teleprompter rig?

Yes. Mirror flips the text horizontally so it reads correctly through the beam-splitter glass of a physical teleprompter mounted in front of a camera. There is also a reading band that marks the active line, and adjustable column width and font size — the three things that make the difference between a script you can follow at speed and one you keep losing your place in.

Is there a global play/pause shortcut?

No, and it is worth being clear about why rather than leaving you hunting for it in the settings. Global hotkeys are registered by the app shell, not by individual widgets, and the shell keeps a deliberately short allowlist of them — an installable widget grabbing a system-wide key combination is not something that should happen quietly. So play and pause are in the widget. For recording, the usual approach is to start it, then start your recording.

Is it free?

Yes. Webstarted Toolbox is free and needs no account, and Teleprompter is a free widget in its catalog — one click from inside the app installs it, with no app update needed.

Get Webstarted Toolbox

Free to use. Download the app, then add Teleprompter from the catalog in one click. macOS 12+ and Windows 10+.

Free beta · macOS · Windows (x64) · Signed & notarized · No account required
Keep exploring

One icon, many small tools

This is just one of the widgets in Webstarted Toolbox. Here are the rest:

Keep Awake Stop your Mac from sleeping, on your terms. 📊 LLM Quota Pace your Claude / AI usage against the clock. 🍅 Pomodoro 25/5 focus cycles in your menu bar. Countdown Live countdowns to anything that matters. Clipboard history Your recent copies, one keystroke away. {} Dev tools JSON, Base64, JWT, regex, epoch — offline. Quick Note A scratchpad that autosaves as you type. 🌐 My IP Your public IPv4 and IPv6, copyable, with ISP and location. 📈 System Info CPU, memory and GPU in your menu bar. 🐹 Topos A 30-second reflex game in your menu bar. 💣 Minesweeper Classic minesweeper in your menu bar. 🪙 Crypto Prices Live crypto prices with 24h change, in your menu bar. 💱 Currency Converter Convert currencies with real parallel rates (blue, MEP, CCL). 🌍 World Clocks Several cities' time at once — daylight saving handled automatically. 🔳 QR Generator QR codes for text, URLs, WiFi or contacts — offline. 🔑 Password Generator Strong passwords & passphrases, fully offline. 🌤️ Weather Any city, now + the days ahead — no API key. 🔥 Habit Tracker Daily streaks — don't break the chain. 100% local. 🔤 Text Tools Change case, slugify, count, dedupe — offline. 🎲 Random Picker Pick from a list at random, or roll dice. 🎨 Color Picker Pick a color, copy hex / rgb / hsl / hsv — offline. 🌐 Translator 18 languages from the menu bar — no API key needed. 🔀 Text Diff Compare two texts line by line — 100% local. Cron Wizard Cron expressions in plain English, with the next runs. 🗃️ Dummy Data Lorem ipsum and fake rows in JSON, CSV or SQL. 🔊 Focus Sounds White, pink or brown noise — synthesized, no files. 🔁 Subscriptions What your recurring services cost per month and year. 🧾 Rates & Tax Hourly ↔ yearly, and add or extract tax. Network Fees Ethereum gas and Bitcoin fees, right now. 📣 UTM Builder Trackable campaign links, normalized so GA behaves. 🌿 Git Status Which of your repos are dirty, unpushed or behind. 🧮 Calculator Type the calculation, read the result as you go. 📊 Stocks Stocks and ETFs with the day’s change — no API key. 🔥 Fireplace A fireplace generated on the fly — no files, no network. 💼 Job Tracker Your applications, with an OS alarm before each interview. Converter 57 units in 8 categories, converted with zero network. Alarms Clock-time alarms that ring with everything closed. 🗂️ Project Boards Kanban boards with your columns, and a due date that notifies you. 📡 Website Monitor Are your sites up? The code and the latency, from your machine. 📤 Send to another computer Text and images to another computer on your network. 📅 Calendar A month view in your menu bar.