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
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
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
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
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.
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:
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+.
One icon, many small tools
This is just one of the widgets in Webstarted Toolbox. Here are the rest: