A basic teleprompter, to fit my needs

Contrary to what some people may think, especially those who have met me in person, I actually give a fair number of presentations. Some with slides, some without. With the lengths of talk I do, not to mention my memory (or lack thereof), I need notes to prompt me on what to say, specifics or otherwise.

For presentations with slides, I'm a big fan of reveal.js and its speaker view plugin. That way, I can have my notes on 1 slide, with the slides on another. However a few of the presentations I give don't have slides at all. In the past, I've either tried very hard to remember my notes, or read the notes off my phone - neither of which is a particularly good idea.

This year, I thought I'd try something different: a teleprompter. Which is how the big kids do it.

Usually, with a teleprompter, you have a full script in front of you, and read verbatim off that. Personally I find I give presentations more naturally if I use bullet-point lists of the key points, and fill them in more naturally in the moment.

#Why I wrote my own

I don't usually want to write my own, especially in this case I'd much rather have used someone elses and focused on the notes rather than writing my own. But there wasn't much out there that suited my needs. I needed a few things specifically:

  • Easy to read, with easily adjustable font size
  • Manual scrolling (or at least the option for), with support for presentation remotes
  • Supported bullet-point list format, rather than just prose. Ideally taking text in markdown
  • Either run natively on Linux, or run just through the browser

I looked, but nothing quite worked how I wanted:

  • manifestinteractive/teleprompter: Only committed the pre-compiled source, remote didn't work. It does have nice timing and font-size adjustment, but doesn't nicely support my presentation remote.
  • ImaginarySense/Imaginary-Teleprompter: No longer supported, recommends QPrompt (see below)
  • QPrompt: I wanted to like it, but the interface didn't seem to work perfectly, and was more designed as a true teleprompter. Getting keyboard shortcuts to work how I needed was also painful.

Those were the main ones I looked at - surprisingly difficult to find decent ones around. So I had no choice, I had to write my own. So I did:

#My implementation

I wanted mine to be incredibly simple - I actually got a basic version going in just over an hour. It intentionally uses minimal CSS (just normalize.css) and only the tiniest amount of JS (well, Typescript) possible. Open the site, upload a plain text, HTML or markdown file, and that's it.

#Notable features

  • Easy scrolling with arrow keys, or a presentation remote
  • Font sizes are automatically calculated using fitty.
  • Lightweight, runs entirely client-side
  • Hyperlegible font
  • White text on black background, for easier reading

#The code

The code itself is on GitHub, licensed under MIT. It's trivial to build and run it yourself if you really want to, or you can use the version on GitHub Pages.

Share this page