Default sits at 160 WPM — the centre of the news-anchor range. Bump down for slower reads, up for fast ones. WPM is approximate (depends on average word length in your script — ±~5%).
Pick a profile to load a complete setup — font, size, line height, speed, theme, reading-line position, and cue. Tweak any control after to fine-tune; the picker switches to Custom when you do.
Where on screen the eye lands. Broadcast (33%) is the documented Autocue/QTV standard used by major newsrooms. Eye-rest (38%) sits a touch lower — comfortable for slow, deliberate reads.
Your script is auto-saved in this browser. For cross-device or belt-and-braces backup, save it as a .txt file or load one in.
Three formats are supported — use whichever matches your script:
ALEX: Have you seen the report?
Sarah: Not yet — send it over.
HOST:
DR SMITH: The results are in.
[Alex] Did you get my message?
[Dr Smith] The results are in.
Inline — name followed by colon and text on the same line.
Standalone — name and colon alone on a line, text on the next.
Bracket — name in square brackets, text follows. ALL-CAPS or Title Case, up to three words. Use Re-parse after editing the script.
Collapses blank lines between speakers. Turn off if blank lines are intentional pauses.
Most teleprompter apps scroll at a constant pixel-per-frame rate. It works, but it feels mechanical — like a conveyor belt. Real broadcast teleprompters (Autocue, QTV) model how the human eye actually reads.
When your eye hits a line it accelerates into the text, reads at speed through the middle, then decelerates at the end — where it briefly pauses before jumping back to the left margin to start the next line. This micro-pause is what gives the reader a moment to reset without losing their place.
This app drives the curve in the time domain, not the pixel domain. On each line boundary crossing, a timer starts. Progress through the line is measured as elapsed time divided by the expected line duration at the current speed. This means the curve is accurate regardless of font, line height, or window size — it never drifts.
The velocity shape is an asymmetric piecewise curve: fast ease-in over the first 40% of the line (the eye locks on quickly), a flat peak through the middle 25% at full speed, then a slower ease-out over the final 35% (the eye needs more time to disengage and jump back to the margin). The curve is normalized so the weighted average velocity equals exactly the speed you set — set speed to 6, you get speed 6 on average, not 5.4 or 6.3.
Speed is set in words-per-minute, the unit broadcasters and voice coaches actually use. The default sits at 160 WPM — the centre of the news-anchor band. Internally the engine drives off a pixels-per-millisecond rate that's recomputed from your WPM whenever font size or line height change, so the perceived read pace stays constant when you resize type — a bigger font no longer secretly slows the read.
WPM is approximate. The conversion assumes ~6.4 words per line at the default column width and average English word length; real scripts vary by ±5% depending on word length and punctuation density. Professional news anchors read at 150–175 WPM; public speakers and educators typically use 100–130. When nervous, people rush — set your WPM 5–10% slower than feels right during practice.
The reading line is where on screen your eye lands. The default is 33% from the top — the documented Autocue/QTV broadcast standard used by major newsrooms (BBC, CNN, Sky News). This places the read in the upper third of the screen, leaving the lower two-thirds for peripheral preview of upcoming text. The eye fatigue this prevents on long reads is the entire point of the convention.
An Eye-rest (38%) alternative is offered in Preferences for slow, deliberate reads where the reader benefits from a touch more text above the line. Public speaking and keynote profiles use this position because the slow pace gives time to absorb context.
Profiles are one-click setups grounded in real industry conventions. Newsroom mirrors the Autocue/QTV white-on-black anchor read used by major broadcasters (BBC, CNN, Sky). High Contrast is Autocue's documented yellow-on-black alternative for difficult readers. Studio Voiceover runs the slower, breathier pace common to audiobook and commercial booths. Creator is conversational, for podcast and YouTube. Vlog is for phone-to-face recording — slightly faster, smaller font, energetic. Educator matches classroom / lecture pace with a generous line height for absorption and an eye-rest anchor for context. Conference drops to keynote / TED pace with a light theme. Speed Read is a fast scrub through the script for memorization or structure review. Terminal is the one aesthetic profile — green-on-black is a CRT phosphor heritage from 1970s/80s computer terminals (IBM 5151, DEC, Amdek), not a broadcast convention.
Pick a profile to load a complete setup. Tweak any control after — the picker switches to Custom the moment you nudge anything off-profile, so the highlighted pill always reflects truth.
Line height matters more than font size for reading comfort. Tight lines force the eye to work harder to find the next line. This app defaults to 3.0 line height — generous by web standards but correct for teleprompter use. Professional systems often go higher.
Georgia is the default because it was designed specifically for screen legibility — wider letterforms, heavier strokes. Courier New is the traditional broadcast script format used for decades. Arial and Verdana are both purpose-built for screen rendering at distance. The Newsroom and High Contrast profiles use Arial because Autocue's documentation explicitly recommends sans-serif (Arial, Tahoma, Verdana) for broadcast.
The parser walks each paragraph block and tests it against three patterns in order: an inline colon label (ALEX: text), a standalone colon label (HOST: alone on a line), and a bracket label ([Alex] text). Speaker names are normalized to uppercase so Alex and ALEX resolve to the same speaker.
Mid-paragraph speakers are detected too. Pasted scripts often pack multiple turns into one block — "...the question. RHIAN: Yes. TORJE: Hmm." — and a pre-processing pass splits any such block into one paragraph per speaker before parsing. Each turn ends up on its own line, coloured correctly. The Copy AI prompt button gives you a reformatter prompt with explicit guidance to keep speakers on separate lines, so cleaned-up source produces cleaner output.
Colors are applied via an injected stylesheet rather than inline style attributes, so they survive the browser's contenteditable sanitizer. If a false positive is detected (a stage direction or sentence fragment that looks like a speaker), tap ✕ next to that row to exclude it — this unwraps its colored spans without affecting any other speakers.
A single HTML file — no server, no accounts, no tracking. Everything runs locally in your browser. Script and settings are stored in localStorage and never leave your device.