Skip to content

nakurian/teleprompt

Repository files navigation

Teleprompter

A floating teleprompter for video calls. Read your notes while maintaining eye contact with the camera — the scrolling text floats above Microsoft Teams, Zoom, or any other app.

Two modes:

  • Browser mode — works in Chrome/Edge, no install needed. The floating window has a dark background.
  • Electron mode — truly transparent overlay. See your video call through the scrolling text. Move it, resize it, lock it in place.

Download (No Install Required)

Just want to use it? Download the standalone app — no Node.js, npm, or dev tools needed.

Platform Download
macOS (Intel + Apple Silicon) Teleprompt-1.0.0-universal.dmg
Windows Coming soon

macOS Quick Start

  1. Download and open the .dmg
  2. Drag Teleprompt to your Applications folder (or double-click to run directly)
  3. Paste or type your script in the editor
  4. Click Float (Transparent) — a transparent overlay appears on top of everything
  5. Position it near your webcam and click Play

Note: macOS may show a security warning since the app isn't signed. Right-click the app → Open → Open to bypass it.


Developer Setup

If you want to run from source or contribute:

Prerequisites

  • Node.js 18+Download here
  • Chrome 116+ or Edge 116+ (for browser mode)

Install

git clone git@github.com:nakurian/teleprompt.git
cd teleprompt
npm install

Mode 1: Browser Mode (Quick & Simple)

Best if you just want a floating text window with no extra setup.

npm run dev
  1. Open http://localhost:3000 in Chrome or Edge
  2. Paste or type your script in the editor
  3. Click Float — a small floating window appears on top of other apps
  4. Click Play (or press Space) to start scrolling
  5. Position the floating window near your webcam
  6. Open Teams/Zoom — the floating window stays on top

Note: The floating window has a dark background. You can adjust the opacity, but you cannot see through it to the desktop. For a truly transparent overlay, use Electron mode.


Mode 2: Electron Mode (Transparent Overlay)

Best for seeing your video call through the teleprompter text. The overlay is truly transparent — only the text is visible.

npm run electron:dev

This opens the full app in its own window. Then:

  1. Paste or type your script in the editor
  2. Click Float (Transparent) — a transparent overlay appears on top of everything
  3. Drag the bar at the top of the overlay to move it where you want
  4. Drag any edge or corner of the overlay to resize it
  5. Click Lock in the overlay's top bar when you're happy with the position — clicks will now pass through to your desktop/Teams/Zoom below
  6. Press Cmd+Shift+L (Mac) or Ctrl+Shift+L (Windows/Linux) to unlock the overlay if you need to move it again
  7. Click Play in the main window (or press Space) to start scrolling

Overlay Controls

Action How
Move overlay Drag the thin bar at the top of the overlay
Resize overlay Drag any edge or corner
Lock (click-through) Click the "Lock" button in the overlay's top bar
Unlock Press Cmd+Shift+L from anywhere (global shortcut)
Close overlay Click "Unfloat" in the main window

Controls (Both Modes)

All controls are in the bar at the bottom of the main window.

Control What it does
Play / Pause Start or stop auto-scrolling
Speed (1–10) How fast the text scrolls (1 = slow crawl, 10 = fast)
Size (18–64px) How big the text appears
BG (30–100%) How dark the background is
Reset Stop scrolling and jump back to the beginning
Edit / Prompter Switch between the text editor and the scrolling view
Float / Unfloat Open or close the floating overlay window

Keyboard Shortcuts

Key What it does
Space Play / Pause
Arrow Up / Arrow Down Speed up / slow down
+ / - Bigger / smaller text
Escape Stop and jump to the beginning
Cmd+Shift+L Lock / unlock the transparent overlay (Electron mode)

Keyboard shortcuts don't work while you're typing in the text editor (so you can type normally).


Tips

  • Keep sentences short — short lines are easier to read while glancing at the camera
  • Use blank lines to create natural pauses between sections
  • Position the overlay near your webcam so it looks like you're making eye contact
  • Start at speed 2–3 and adjust as you get comfortable
  • Paste from anywhere — formatting from websites (paragraphs, headings, lists) is automatically preserved as clean text

Browser Support (Browser Mode)

Browser Works? Notes
Chrome 116+ Yes Full support
Edge 116+ Yes Full support
Firefox No Floating window API not available
Safari No Floating window API not available

Electron mode works on macOS, Windows, and Linux regardless of browser.


Building the Standalone App

To package the app as a standalone .dmg or .exe:

# macOS (.dmg — universal binary for Intel + Apple Silicon)
npm run electron:build:mac

# Windows (.exe — NSIS installer)
npm run electron:build:win

# Current platform
npm run electron:build

Build output goes to the release/ directory.


Tech Stack

  • Next.js 16 with App Router
  • React 19 + TypeScript
  • Tailwind CSS v4
  • Zustand for state management
  • Electron for the transparent overlay mode
  • Document Picture-in-Picture API for the browser floating window
  • BroadcastChannel API for syncing state between Electron windows

Project Structure

src/
├── app/
│   ├── page.tsx               # Main page — editor, controls, teleprompter
│   ├── overlay/page.tsx       # Transparent overlay page (Electron mode)
│   ├── layout.tsx             # Root layout
│   └── globals.css            # Styles
├── components/
│   ├── Teleprompter.tsx       # Scrolling text display
│   ├── TextEditor.tsx         # Script input with paste support
│   ├── ControlBar.tsx         # Playback and display controls
│   └── PipLauncher.tsx        # Float button (auto-detects Electron vs browser)
├── hooks/
│   ├── useAutoScroll.ts       # Smooth 60fps scroll engine
│   └── usePictureInPicture.ts # Browser floating window management
├── stores/
│   └── teleprompterStore.ts   # Shared state with cross-window sync
└── types/
    └── electron.d.ts          # TypeScript types for Electron API

electron/
├── main.js                    # Electron main process (windows, shortcuts)
└── preload.js                 # Secure bridge between Electron and the web app

License

Private project.

About

teleprompt

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors