From blank page to confident read.

Textream keeps the next words close to the camera and follows your pace. The basic workflow is the same on every device.

Add your words

Type or paste a script. On Mac you can organize it into pages, open a saved .textream file, or import PowerPoint presenter notes.

Choose how it follows

Use Word Tracking for speech-matched progress, Classic for steady auto-scroll, or Voice-Activated to move only while you speak.

Start naturally

Place the prompt near the camera, press start, and speak at your own pace. Pause, restart, or jump to another word whenever you need.

First time using voice features? Allow Microphone access. Word Tracking also needs Speech Recognition access. A Classic Read session works without either permission; mobile Record sessions still capture microphone audio.

Write for the way you speak.

Short sentences, intentional breaks, and quiet delivery cues make a script easier to read without sounding read.

Good morning, and thank you for being here. [smile]

Today I want to share one clear idea: when we slow down and connect with one person at a time, even a complex message becomes easier to understand. [pause]

Take a breath, look into the camera, and bring the message home. [nod]

Stage directions

Put cues in square brackets, such as [smile], [pause], or [look at camera]. Textream displays them in the cue color but skips them when matching your voice, so they never interrupt Word Tracking.

Paragraphs and line breaks

Start a new source line when you want a visual pause. On Mac, turn on Show Paragraph Dividers to add extra space and three centered dots before the next line. Consecutive empty lines collapse into one visual divider.

Pages and presentation notes

  • On Mac, use Add Page to split a longer talk into sections and select pages from the sidebar.
  • Save the full page set as a .textream file and reopen it later.
  • Drop a .pptx file into the Mac editor to turn presenter notes into pages. Export Keynote or Google Slides to PowerPoint first.
  • If the script language differs from your speech setting, Textream can suggest a closer supported language.

Mac editor tools and shortcuts

Use the red microphone button to dictate directly into the current page; press it again to pause dictation. The File menu can open a .textream file or presentation, save the current file, or save a new copy.

  • Command + Return starts the prompter; Esc stops the active overlay.
  • Command + , opens Settings.
  • Open File or Presentation (Command + O) opens a Textream file or supported presentation.
  • Command + S saves; Command + Shift + S uses Save As.

Three ways to keep your place.

Pick the mode that matches the room. You can rehearse without a microphone, follow an unscripted delivery, or track every spoken word.

Speech matched

Word Tracking

Listens through Apple Speech Recognition, matches what you say to the script, and highlights progress in real time. Choose the correct language and microphone for the strongest match.

Constant pace

Classic

Moves steadily from 0.5 to 8 words per second. It does not need the microphone, making it useful for silent rehearsal or a fixed speaking pace.

Voice gated

Voice-Activated

Uses microphone activity to scroll while you speak and pause in silence. Set the same 0.5–8 words-per-second pace used by Classic mode.

You stay in control.

The prompt follows automatically, but it never locks you into a rigid take.

Mac

Overlay controls

  • Pause or resume the current read.
  • Mute and unmute voice input when the selected mode uses a microphone.
  • Scroll manually or select a word to move the reading position.
  • Press Esc to stop the teleprompter.
  • Move to another page manually, or enable Auto Next Page.
iPhone & iPad

Read and Record controls

  • Play or pause, restart the script, and tap a word to jump.
  • Show or hide the camera during a Read session.
  • For Classic or Voice-Activated mode, adjust speed with the control or a horizontal swipe.
  • In Record mode, start or stop recording, switch cameras before a take, and open saved Textream recordings.

Every setting on Mac.

Open Textream Settings to tune how the prompt looks, follows your voice, and reaches other screens. Changes save automatically. Green labels below mark new-install defaults.

Appearance

Type, color, and overlay size

Font
SansSerifMonoDyslexiaChanges the reading typeface. Dyslexia uses the bundled OpenDyslexic font.
Size
XS · 14ptSM · 16ptLG · 20ptXL · 24ptSets the prompt text size across overlay modes.
Highlight Color
WhiteYellowGreenBluePinkOrangeSets the primary text and progress color.
Cue Color
WhiteYellowGreenBluePinkOrangeColors bracketed stage directions independently from spoken words.
Cue Brightness
DimLowMediumBrightControls how strongly unread and completed cues appear.
Dimensions
340 × 150pxWidth 310–500pxHeight 100–400pxAdjusts the overlay reading area in 10px steps.

Guidance

Tracking, input, and pace

Mode
Word TrackingClassicVoice-ActivatedSelects the guidance behavior described above.
Speech Language
Closest supported system languageAppears in Word Tracking. Match it to the language you plan to speak, not only the language of the Mac interface.
Microphone
System DefaultAny connected inputAppears for Word Tracking and Voice-Activated modes. Choose a specific device when macOS selects the wrong input.
Scroll Speed
3.0 words/s0.5–8.0 words/s0.5 stepsAppears in Classic and Voice-Activated modes.

Reading

Anchor, context, and continuity

Reading Position
CenteredNear TopCentered keeps the active line in the middle. Near Top keeps the previous line visible above it and places the next words closer to the camera.
Show Paragraph Dividers
OffOnAdds extra space and three centered dots at source line breaks. The setting also applies to text sent through Director Mode.
Show Last Spoken Words
OnOffShows recently recognized words while Word Tracking is active, helping confirm what the microphone heard.
Keep Screen Awake
OffOnPrevents display and system sleep while the teleprompter is active.

Teleprompter

Placement and session behavior

Overlay Mode
Pinned to NotchFloating WindowFullscreenPinned stays at the top of a screen, Floating can be placed anywhere and remains above other apps, and Fullscreen fills the chosen display.
Pinned Display
Follow MouseFixed DisplayTarget DisplayFollow Mouse moves the notch overlay to the display containing the pointer. Fixed Display keeps it on the screen you select.
Transparency
OffOnAmount 20–95%Default amount 85%Available in Pinned mode. Makes desktop content visible through the overlay; the slider runs from more to less transparent.
Follow Cursor
OffOnAvailable in Floating mode. Places the window at the pointer’s bottom-right and follows it between positions.
Glass Effect
OffOnOpacity 0–60%Default opacity 15%Available in Floating mode. Adds a frosted surface and lets you tune its opacity.
Fullscreen Display
Main displayAny connected displaySelects the screen Fullscreen mode fills. Press Esc to stop.
Elapsed Time
OnOffShows a running timer while the teleprompter is active.
Hide from Screen Sharing
OnOffAsks macOS to keep the overlay out of screen recordings and video calls. Capture apps and external hardware can behave differently, so make a short test recording first.
Auto Next Page
OffOn3 seconds5 secondsAfter a page finishes, shows a countdown and advances to the next nonempty page.

External

Displays, Sidecar, and mirror rigs

External Display Mode
OffTeleprompterMirrorTeleprompter presents normal fullscreen text. Mirror flips the output for reflective teleprompter glass.
Mirror Axis
HorizontalVerticalBothAppears in Mirror mode. Horizontal is standard for most mirror rigs; Both rotates the output 180 degrees.
Target Display
First available external displayAny detected external displaySelects a connected monitor or Sidecar iPad. Use Refresh after connecting a new display.

Remote

View the live prompt in a browser

Enable Remote Connection
OffOnStarts a local server. Scan the QR code or open the displayed address on a phone, tablet, TV, or computer connected to the same Wi-Fi network.
Port
7373 · HTTP7374 · WebSocketCustom port 1024–65534The WebSocket uses the number immediately after the HTTP port. Select Restart after changing it.
Browser Mirror
Remembered per browser?mirror=1?mirror=0Use the Mirror button to flip the complete remote prompt horizontally for teleprompter glass. The choice is saved in that browser. Add ?mirror=1 or ?mirror=0 to a QR-code or bookmark URL to override and save the initial state.

Use a trusted network. Remote Connection has no Textream cloud account or public relay. Anyone who can reach the local address may be able to see the current script and reading state.

Director

Let another person drive the script

Enable Director Mode
OffOnStarts a browser editor at the displayed local address. The Mac editor is disabled while Director Mode is active. A director can send and update the script, then start or stop the read.
Reading behavior
GoStopNew ScriptWord Tracking is forcedSingle live pageGo sends the current script and starts the read; it changes to Stop while running. Completed text locks in the browser while unread text remains editable. After completion, New Script clears the director workspace. Source line breaks and enabled paragraph dividers are preserved.
Port
7575 · HTTP7576 · WebSocketCustom port 1024–65534The WebSocket uses the next port. Select Restart after changing it.

Reset All

Bottom-left of Mac Settings

Returns every Mac setting to its new-install default after confirmation, including the closest supported system speech language and Hide from Screen Sharing set to On.

Read on screen. Or record the take.

The mobile app combines the script editor, camera, follow mode, and session setup on one screen.

Read

A focused teleprompter session

  • Choose Word Tracking, Classic, or Voice-Activated.
  • Optionally show the camera behind the prompt.
  • Enable landscape mirror mode for teleprompter glass.
  • Keep the prompt readable over a plain background or optionally show the camera behind it.
Record

Camera and prompt together

  • The camera and microphone are required for a recorded take.
  • Switch between front and rear cameras before recording.
  • Finished videos save to Photos and appear in Textream’s recordings gallery.
  • If saving fails, use Retry Save; discard only when the pending recording is no longer needed.
  1. Write or paste the scriptUse the expand button when you want a full-screen editor. Bracketed stage directions work here too.
  2. Choose Read or RecordRead can work with or without the camera. Record always uses it.
  3. Select a follow mode and speedSpeed appears for Classic and Voice-Activated modes.
  4. Start Prompter or Open CameraGrant requested permissions, then use the in-session controls to run the take.

Adjust without ending the session. Open Mirror settings during a read to change mirroring and its axis, reading position, text size, Classic or Voice-Activated speed, and whether playback controls remain visible.

Every setting on iPhone and iPad.

Open the sliders icon on the setup screen. These choices are saved for future sessions.

Setup screen

Saved session choices

Session
ReadRecordRead starts a teleprompter session with an optional camera. Record opens the camera and always captures microphone audio with the video.
Follow Mode
Word TrackingClassicVoice-ActivatedSelects speech-matched progress, constant auto-scroll, or scrolling that pauses in silence.
Speed
3.0 words/s0.5–8.0 words/s0.5 stepsAppears for Classic and Voice-Activated modes and is remembered between sessions.
Camera
Off in ReadOptional in ReadRequired in RecordShows the camera behind the prompt during Read. Selecting Record enables it automatically and prevents it from being turned off.

Prompter Settings

Sliders icon on the setup screen

Mirror prompt in landscape
OffOnPre-flips the prompt for teleprompter glass during a landscape Read session. Controls remain readable on the device.
Mirror Axis
HorizontalVerticalBothAppears when mirror mode is enabled. Horizontal is standard for teleprompter glass.
Reading Position
Near CameraCenterNear Camera keeps the active line just below the front camera and controls for more natural eye contact. Center places it in the middle of the display.
Font Family
SansSerifMonoDyslexiaChanges the prompt typeface; Dyslexia uses bundled OpenDyslexic.
Font Size
XS · 28ptSM · 34ptLG · 44ptXL · 56ptSets the base fullscreen prompt size; landscape layout scales it to fit.
Text Color
WhiteYellowGreenBluePinkOrangeSets the primary prompt and progress color.
Stage Directions
WhiteSix color presetsDimLowMediumBrightSets bracketed cue color and brightness separately from spoken text.
Camera Overlay Opacity
52%30–80%5% stepsAdjusts the dark overlay behind prompt text when the camera is visible.
Speech Language
English (US) on a new installAny Apple-supported localeUsed by Word Tracking. The settings screen loads Apple’s supported languages; if a previously saved choice is no longer supported, it falls back to the closest system-language match.
About
Shows the installed version and links to Textream for Mac, GitHub, Privacy, Support, and the OpenDyslexic acknowledgements.

During a session

Session-only control

Show Playback Controls
On for each new sessionOffShows or hides the bottom playback controls without ending the current read. Open Mirror settings to change it alongside mirroring, reading position, text size, and available scroll speed.

Launch it. Script it. Direct it.

Textream exposes a URL scheme for one-shot prompts and a local WebSocket protocol for custom Director clients. These interfaces are available in the Mac app.

URL scheme

Open a prompt from another app

Open textream://read?text=… with a URL-encoded text value. Textream loads that text and starts the overlay. From Terminal, try open 'textream://read?text=Hello%20world'.

Textream also includes a macOS Service named Read in Textream. Enable it once in System Settings → Keyboard → Keyboard Shortcuts → Services, under Text. Then restart the source app if needed, select text, and choose Services → Read in Textream. Some apps with custom context menus do not expose macOS Services.

Open a prompt from Swift

Swift
import AppKit

var link = URLComponents()
link.scheme = "textream"
link.host = "read"
link.queryItems = [
    URLQueryItem(
        name: "text",
        value: "Welcome everyone. [pause] Let's begin."
    )
]

if let url = link.url {
    NSWorkspace.shared.open(url)
}

Open a prompt from a web page

JavaScript
const script = "Welcome everyone. [pause] Let's begin.";
const url = `textream://read?text=${encodeURIComponent(script)}`;

window.location.href = url;

Director WebSocket API

Control a live read on the local network

Connect
Enable Director Mode, fetch http://<mac-ip>:7575, and extract the 64-character AUTH_TOKEN embedded in the page. Connect to ws://<mac-ip>:7576 and send {"type":"auth","text":"<token>"} as the first frame within five seconds. Custom ports use HTTP port + 1 for WebSocket.
Commands
authsetTextupdateTextstopsetText starts a new Word Tracking read. updateText sends the complete script plus the latest highlightedCharCount received from Textream as readCharCount; do not calculate that offset independently, and keep the locked prefix unchanged. stop ends the overlay.
State
Textream sends JSON state at about 10 Hz while active, including words, highlightedCharCount, totalCharCount, isActive, isDone, isListening, text and cue colors, the last spoken text, and audio levels.

Local network only. The token changes whenever the Director server restarts. HTTP and WebSocket traffic is not encrypted, so do not expose these ports to the internet or include the token in logs, screenshots, or shared source code.

Minimal Director client

Python
# pip install websockets
import asyncio, json, re, urllib.request
import websockets

HOST = "192.168.1.42"
HTTP_PORT = 7575

def get_token():
    url = f"http://{HOST}:{HTTP_PORT}"
    with urllib.request.urlopen(url, timeout=3) as response:
        page = response.read().decode("utf-8")
    match = re.search(r"AUTH_TOKEN='([0-9a-f]{64})'", page)
    if not match:
        raise RuntimeError("Director token not found")
    return match.group(1)

async def run():
    async with websockets.connect(
        f"ws://{HOST}:{HTTP_PORT + 1}"
    ) as socket:
        await socket.send(json.dumps({
            "type": "auth", "text": get_token()
        }))
        await socket.send(json.dumps({
            "type": "setText",
            "text": "Hello everyone.\nWelcome to the show."
        }))

        async for message in socket:
            state = json.loads(message)
            print(state["highlightedCharCount"], state["isDone"])
            if state["isDone"]:
                await socket.send(json.dumps({"type": "stop"}))
                break

asyncio.run(run())

Minimal Director client

Node.js
// npm install ws  (Node.js 18+)
import WebSocket from "ws";

const host = "192.168.1.42";
const httpPort = 7575;
const page = await fetch(`http://${host}:${httpPort}`)
  .then(response => response.text());
const token = page.match(/AUTH_TOKEN='([0-9a-f]{64})'/)?.[1];
if (!token) throw new Error("Director token not found");

const socket = new WebSocket(`ws://${host}:${httpPort + 1}`);
socket.on("open", () => {
  socket.send(JSON.stringify({ type: "auth", text: token }));
  socket.send(JSON.stringify({
    type: "setText",
    text: "Hello everyone.\nWelcome to the show."
  }));
});

socket.on("message", raw => {
  const state = JSON.parse(raw.toString());
  console.log(state.highlightedCharCount, state.isDone);
  if (state.isDone) {
    socket.send(JSON.stringify({ type: "stop" }), () => socket.close());
  }
});

See the full Director protocol in the README for every command field and state property.

Permissions, networks, and help.

Textream has no account, advertising, analytics SDK, or Textream-operated cloud service. Features that use hardware or your local network remain under your control.

Permissions

Grant only what your mode needs

  • Word Tracking: Microphone and Speech Recognition.
  • Voice-Activated: Microphone.
  • Classic Read: no microphone or speech permission. Record still captures microphone audio.
  • Mobile Record: Camera, Microphone, and Photos add access. Record captures microphone audio even when Classic is selected.
  • Recordings gallery: Photos read and write access.
Connections

Keep Remote and Director local

  • Use devices on the same trusted Wi-Fi network.
  • Allow incoming connections if the macOS firewall asks.
  • Do not share QR codes or local IP addresses publicly.
  • Turn each server off when you are finished.

Still stuck?

Read the support guide for quick fixes, or search existing GitHub issues. Before posting, remove private scripts, credentials, QR codes, local IP addresses, and personal details from screenshots or logs.

For a full explanation of scripts, recordings, microphone audio, speech recognition, Photos access, and local-network features, read the Textream Privacy Policy.