No. Typestream works in two ways: Auto Mode and Scripted Mode. In Auto Mode, simply paste your text into the editor, set your desired typing speed (WPM), select your target window, and hit Start. Typestream handles all the human-like pacing automatically—adding natural jitter, thinking pauses, and hesitations at punctuation. You don't need to learn tags or create workflows for quick, one-off typing jobs. Tags and workflows are optional power features for when you want precise control over pauses, corrections, or multi-step sequences.
Download the Typestream DMG file and open it. Drag the Typestream app icon to your Applications folder, then double-click to launch it. On first run, Typestream will prompt you to grant Accessibility permission—this is what lets it send keystrokes to other apps. Click Open System Settings from the prompt, find Typestream in Privacy & Security > Accessibility, and switch the toggle on. You may need to quit and reopen Typestream afterwards for the change to take effect.
If you dismissed the prompt and want to grant access later, just open Typestream and try to start a workflow—it will re-prompt, or you can add it manually under System Settings > Privacy & Security > Accessibility.
Note for macOS Sequoia and later: Because Typestream is distributed directly, macOS may warn that the app was downloaded from the internet. If you receive a warning, you can open it by control-clicking (or right-clicking) the app icon in Finder, selecting Open from the menu, and then clicking Open again, or by allowing it in System Settings > Privacy & Security.
When you click the Start button, a countdown appears. During this countdown, click into the window or text field where you want Typestream to type. After the countdown ends, Typestream will send keyboard events to that target application. If you're using a workflow, you can assign a global keyboard shortcut trigger to your step—Typestream listens system-wide, so you can press the shortcut from within your target application to start typing without ever switching away from it.
A good starting range is 40–80 WPM for natural-looking, conversational typing that reads as live to any observer. From 80 to 120 WPM, Typestream gradually dials back jitter and thinking pauses for faster, more confident delivery. At 120 WPM and above it enters Mechanical Mode, removing humanization entirely for perfectly smooth, rhythmic playback — ideal for clean technical demos. WPM is set per step, so you can mix a relaxed intro with a fast code dump in the same workflow. Experiment to find what fits your material.
They do very different things:
Pause / Resume — ⌃⌥⌘.
Works globally, from any app, at any time during playback. Press it once to pause; press
it again to resume from exactly where you left off. The workflow stays in playback mode
— the editor is not accessible while paused. This is the shortcut to reach for mid-demo
when you need a moment without switching windows. Note: Typestream also auto-pauses if it detects your target window has lost focus,
waiting for you to return before continuing.
Stop — ⌘.
Ends playback entirely and returns Typestream to idle. The editor becomes accessible again,
so you can fix your script or start over. Because ⌘. is a standard macOS menu shortcut,
Typestream must be the frontmost app to receive it — switching back to Typestream will
auto-pause the workflow first, then you press ⌘. to stop.
In short: use ⌃⌥⌘. to pause mid-flow without leaving your target app; use ⌘. when you want to abort and go back to editing.
Once you've set up one or more steps with scripts and triggers, use File > Save (or ⌘S) to save your workflow as a .json file on your Mac. Give it a
descriptive name—it's a plain text file that stores your steps, WPM settings, trigger
configurations, and content. To reuse it later, go to File > Open and
select the .json file. Typestream will restore your entire workflow exactly
as you saved it.
Typestream needs Accessibility permissions to simulate keyboard events and track which window is currently focused. macOS requires any application that sends system-wide keyboard input to be explicitly granted this permission by the user, as a security measure. Without it, Typestream cannot type into other applications.
Go to System Settings > Privacy & Security > Accessibility and look for Typestream in the list. If it's not there, click the + button and navigate to your Applications folder to add Typestream. Once added, make sure the toggle next to Typestream is turned on. You may need to restart Typestream after granting permission for the change to take effect.
Double-check that Typestream appears in System Settings > Privacy & Security > Accessibility and that the toggle is enabled. If you recently updated macOS or reinstalled Typestream, you may need to re-grant permissions. You can also try removing and re-adding Typestream to the list. If the problem persists, restart your Mac and try again.
No. Your scripts, workflows, keystrokes, and clipboard contents never leave your Mac
— there is no way for the App to transmit them. Typestream does send three anonymous
usage events (that it was installed, that it was launched, and whether the upgrade
screen was reached), and they carry no identifier of any kind — no account, no device
ID, nothing that persists between launches — so they can't be traced back to you.
Nothing is ever reported about which workflows you have or what's in them. Beyond
that it contacts external services in two narrow, non-content ways: a license check
with our licensing provider if you're on Pro, and update checks (which you can switch
off in Settings > General > Updates). None of these ever includes your
scripts, keystrokes, or clipboard. Workflow .json files live only in
folders you choose. See the Privacy Policy for the full breakdown.
Two things, both narrowly scoped. First, Typestream posts synthetic keyboard events to whichever app is frontmost while a workflow is running—this is the core feature. Second, it reads the title of the focused window so it can detect when you've switched away from your target app and auto-pause playback. Typestream does not read text from other apps, inspect their UI, or observe your keystrokes when no workflow is running.
Quit Typestream, then drag it from your Applications folder to the
Trash. To revoke its Accessibility access, open System Settings > Privacy & Security > Accessibility, select
Typestream in the list, and click the – button. Your saved workflow .json files are stored wherever you put them and are not removed by uninstalling
the app—delete those manually if you no longer need them.
By default, Typestream adds jitter—subtle, randomized variations in the speed at which it types each character. This mimics how humans naturally vary their typing rhythm, making the output feel more authentic. If you toggle off Simulate Thinking, jitter is still applied to individual keystrokes, but the engine stops adding longer pauses at punctuation and between groups of words. If you want perfectly rhythmic, mechanical typing with zero variation, set your WPM to 120 or above, which automatically enables Mechanical Mode.
Mechanical Mode activates automatically when you set your typing
speed above 80 WPM, ramping in gradually until it's fully active at 120 WPM. In this mode, Typestream dials back jitter (the ±5%
keystroke variation) and the Simulate Thinking pauses, until at 120
WPM and above every character is typed at a perfectly consistent interval. This is
ideal for professional technical demos or video recordings where you want rock-solid
rhythm rather than human-like variation. Explicit tags like [pause] and [think] are still respected even in Mechanical Mode.
When Simulate Thinking is enabled on a step, Typestream injects randomized pauses (typically 0.6–1.4 seconds) at natural break points: after commas, at sentence ends, and between groups of words. This simulates the mental gather—the brief pause a writer takes before drafting a new sentence or clause. It makes playback feel more deliberate and thoughtful. When toggled off, the engine types at a more consistent pace without these long thinking pauses (though jitter still applies to individual characters).
Yes, but only with script tags. By default, Typestream adds automated pauses at
punctuation when Simulate Thinking is enabled—commas get 0.3–0.8s,
sentence ends get 0.8–1.8s, and paragraph breaks get 2–4s. To override this in
specific places, use explicit tags: [pause:500] for a fixed 500ms pause,
or [pause:200-800] for a randomized pause between 200–800ms. Explicit tags
always take precedence over the automated system.
[pause] is a fixed or fixed-range delay: you control the exact duration
(e.g., [pause:1000] pauses for exactly 1 second). [think] is
a simulated thinking pause that uses a randomized natural distribution—it typically
ranges from 400ms to 3 seconds, centered around 1 second, mimicking the unpredictable
hesitation a writer experiences when gathering thoughts. Use [pause] when
you want precise, reproducible timing; use [think] when you want natural,
varied thinking moments.
Not unless you tell it to. By default, if Simulate Thinking is
enabled, Typestream adds longer pauses after punctuation (at natural break
points). The typing speed itself (characters per second) remains consistent
throughout, determined by your WPM setting. If you want to explicitly speed up or slow
down a section, use the [speed] tag (e.g., [speed:2.0] types
twice as fast, [speed:0.5] types twice as slow).
Typestream has over 40 script tags organized by category. The easiest way to browse them is through the Tag Toolbar at the bottom of the editor—just click any tag button to insert it. You can also open the built-in Help (⌘?) to search the complete Tag Reference, which includes descriptions and examples for every tag. Tags are grouped into categories: Pacing (pause, think), Deletion (bs, del, clear), Movement (move, word, line), Selection, Clipboard, Typos, and more.
Yes. You can use tags in sequence—just place them one after another and they'll
execute in order. For example, [pause:500][think] will apply a fixed pause
followed by a thinking pause. Tags execute in the sequence you write them.
A workflow is a sequence of one or more steps that
Typestream executes in order. Each step contains a script (plain text + optional
tags), a typing speed (WPM), and a trigger configuration (what starts this step).
Workflows let you choreograph multi-moment demos, presentations, or drafting sequences
where different sections happen at different speeds or are triggered by keyboard
shortcuts. You can save and reuse workflows as .json files.
When editing a step, look at the Trigger dropdown at the top. Select Keyboard Shortcut, then click Set shortcut and press the key combination you want to use (e.g., ⌃⌥⌘T). Typestream will listen globally for that hotkey and advance to the next step when you press it. Note: Typestream is "passive"—both Typestream and your target application will receive the keystroke, so use unique combinations to avoid accidentally triggering commands in the target app.
Yes. In the Sidebar, click and drag a step to move it up or down in the sequence. The order you see in the sidebar is the order Typestream will execute the steps when you run the workflow.
There are three trigger types:
- After Previous: The step starts immediately when the previous step finishes (or right away if it's the first step).
- Time Delay: The step waits for a number of seconds you specify before starting.
- Keyboard Shortcut: The step waits until you press a global hotkey, then starts.
Use "After Previous" for seamless, continuous sequences. Use "Time Delay" to build in pauses between steps (useful for letting an audience absorb something). Use "Keyboard Shortcut" for interactive demos where you control the pacing.
You can set up and edit triggers on any step for free. Running a workflow that has more than one step requires Typestream Pro — that applies to Run Workflow, Run from Here and Run This Step alike. A workflow with a single step runs in any tier, with the full engine.
Yes. Each step has its own WPM setting in the Configurator Bar at the top. This lets you type the first step slowly (60 WPM) and the second step quickly (150 WPM), for example. You can also toggle Thinking on or off per step, giving you fine-grained control over how each moment feels.
Right-click the step in the sidebar and select Remove Step, or select the step and press the Delete key. If it's the only step in your workflow, you'll need to add a new step before you can delete the last one (a workflow must have at least one step).
No. You can edit steps and hit the play button to test immediately. However, if you
want to preserve your work for later use, save the workflow (File > Save or ⌘S) as a .json file. Unsaved changes are indicated by a dot next to the
workflow name in the title bar.
Free gives you the complete typing engine on a single-step workflow: every behavior tag, all realism features (jitter, thinking pauses, Mechanical Mode), no watermarks, no time limit. You can also author, edit and save multi-step workflows for free — running one is what needs Pro.
Pro ($39.99, one-time) unlocks running multi-step workflows end to end and the three step triggers — After Previous, Time Delay, and Global Shortcut. It's a single upgrade on top of the same engine, not a separate app.
One Pro license activates on two Macs — say, a desktop and a laptop. Each activation is tied to that Mac's hardware identifier. If you need to move to a third Mac, deactivate one of your existing activations first.
Open Typestream > Settings > License and paste in the license key from your purchase confirmation, then click Activate. To move a seat to a new Mac, click Deactivate in Settings on the old machine first, then activate the same key on the new one. You can also manage your activations from the customer portal linked in your purchase confirmation email.
No. Typestream keeps you licensed for up to 30 days past your last successful license check if it can't reach the network — a flaky connection or a flight never locks you out mid-demo. Only an explicit "revoked," "expired," or "invalid key" response from our licensing provider drops you back to the Free tier, and even then the App keeps working — it just falls back to single-step mode rather than blocking you entirely.
First, check that your license is actually activated: open Typestream > Settings > License and confirm it shows "Licensed to [your email]" rather than "Free version." If it shows "Free version," paste in your license key from the purchase confirmation email and click Activate.
If it already shows as licensed, the issue is likely which command you're using to run the workflow: Run this step only ever runs the single step you right-clicked, by design, in any tier. Use Run Workflow (from the start) or Run from Here (from a specific step onward) in the sidebar to play the full sequence.
- Verify Accessibility permissions: Go to System Settings > Privacy & Security > Accessibility and confirm Typestream is listed and enabled.
- Confirm your target window: After clicking Start, you have a few seconds to click into the application where you want Typestream to type. Make sure you clicked into an editable text field.
- Check the target app isn't blocked: Some applications (like password fields in browsers, or certain secure contexts) may prevent Typestream from typing for security reasons.
- Test with a simple app: Try typing into a plain text editor (Notes, TextEdit) to isolate whether the issue is with a specific app or Typestream itself.
This usually means your target window lost focus before Typestream started typing, or you switched windows during playback. Make sure to click clearly into your target application during the countdown and keep it in focus until you've finished. If you're using multi-step workflows, Typestream will pause and wait if it detects a focus change, so click back into your target window to resume.
If you're using [typo] tags, the app's built-in autocorrect may interfere
with your intended typo. We recommend disabling system autocorrect in your target application before using these
tags. This is especially important in word processors and code editors. For example, in
macOS text areas, you can often disable this in the Edit menu or app preferences.
Check your WPM setting. A very low WPM (e.g., 40–50) will make typing feel glacially slow. Also check if Simulate Thinking is enabled—if so, Typestream may be adding long pauses at punctuation or between word groups, which can make playback feel sluggish. Try increasing the WPM or toggling off Thinking to see if that helps.
To abort the workflow entirely, switch back to Typestream and press the stop hotkey: ⌘. (Command + Period). (Typestream will automatically pause the workflow when you switch away from your target app). The step that was running stays active in the editor—nothing resets.
To continue from that point, right-click the step in the sidebar and choose Run from here (or Run this step). If those options are grayed out, it's because the step's trigger is set to After Previous, which can only be started automatically and can't be triggered manually from another application. Change the trigger to Keyboard Shortcut or Time Delay to enable those options.
If you just want to pause playback while staying in your target app, press the global Pause / Resume shortcut: ⌃⌥⌘. (Control + Option + Command + Period). Press it again to resume.
[paste] simply triggers ⌘V in the target app, pasting whatever is already
on your system clipboard—Typestream doesn't put anything there for you. If you want a
specific string pasted, copy it before running the workflow, or use [paste:"your text"], which types the literal text without ever touching
the clipboard. Either way, your existing clipboard contents are never modified by
Typestream.
Email [email protected] with:
- Your macOS version and Typestream version (visible in Typestream > About).
- The target application you were typing into.
- A short description of what you expected to happen and what actually happened.
- If reproducible, the workflow
.jsonfile (or just the script content).
For deeper issues, recent log output helps a lot. Open Console.app (in Applications > Utilities), select your Mac in the sidebar, type subsystem:com.quansie.typestream in the search bar, reproduce the bug, then
copy the relevant lines into your email.
Some apps (like password fields, encrypted note-taking apps, or certain browser contexts) may block keyboard input for security. If Typestream works in a plain text editor but not in your target app, the issue is likely app-specific. Try adjusting the app's settings (look for accessibility or input security options). If the problem persists, the app may intentionally restrict external keyboard input, and there's no workaround on Typestream's side.
A few patterns that work well:
- Use a Keyboard Shortcut trigger so you can start each step from inside your target app without switching back to Typestream. This is the single biggest quality-of-life improvement for live demos.
- Keep Typestream out of the frame. The Typestream window goes always-on-top while a workflow is running—park it on a second display, drag it off the captured region, or move it to a different Space so it doesn't appear in the recording.
- Record only the target app's window (in QuickTime, ScreenFlow, or similar) rather than the full screen, so Typestream stays invisible regardless of where you put it.
- Disable autocorrect, autocomplete, and Writing Tools in the target app before recording. They can rewrite your text mid-stream and ruin a take.
Yes. Open Typestream > Settings (⌘,) and use the Editor Font Size slider to pick a size between 10 pt and 24 pt. The change applies live to the editor.
Yes. Go to Typestream > Settings (or press ⌘,) and toggle Show Tag Toolbar off. You can also use the keyboard shortcut ⇧⌘T to quickly toggle it. Tags still work in your scripts even when the toolbar is hidden—the toolbar is just a visual aid for quick access.
Yes. Typestream works with any application that accepts keyboard input, including code editors. A few things to note:
- Some code editors have autocomplete that may interfere with Typestream's input. Test to confirm.
- Auto-correct should be disabled in your editor for best results with
[typo]tags. - If your editor uses a custom input system or encrypts sensitive input, Typestream may not work in certain contexts (like password entry).
Not in a dedicated UI yet, but you can browse your workflows using File > Open, which shows your file system. We recommend organizing your workflow .json files in a dedicated folder (e.g., "Typestream Workflows") for easy
access.
Workflows are saved as plain .json files, which are human-readable and
editable in any text editor. There's no other export format currently, but you can
easily share or version-control your .json files. If you need a different
format, you can manually convert the JSON structure using standard tools.
Currently, Typestream is macOS-only. There are no immediate plans for other platforms, but we'll keep an eye on community interest.
Typestream must be the active process posting keyboard events in real-time. If you force-quit Typestream or it loses focus for extended periods, playback may be interrupted or behave unexpectedly. We recommend keeping Typestream in focus (or at least not force-quitting it) until your workflow is complete.
Typestream can type into most web forms, but some forms have security restrictions (e.g., password fields, or forms protected by bot-detection systems). For standard text input fields, Typestream works fine. Always test with a non-critical form first to confirm it works as expected.
No. Typestream is not designed, built, or intended to bypass bot-detection algorithms, anti-spam systems, CAPTCHAs, or any type of biometric evasion.
Typestream is designed exclusively for perception and visual presentation—for scenarios like screencasts, keynotes, code demonstrations, and tutorials where the aesthetic illusion of real-time human typing is desired. It does not alter browser fingerprints, mock network behaviors, or attempt to evade automated security layers. Using it in an attempt to bypass security controls is unsupported and will likely result in detection.
Partially. Typestream can type any Unicode text, so characters in Arabic, Hebrew, and other RTL scripts are reproduced accurately in the target app. Thinking pauses, pacing, and typo tags all work as expected regardless of script.
What doesn't work in v1 is scripted navigation: tags like [move], [word], [sel], and [line] send physical arrow key
events. In RTL documents, physical left/right is the opposite of logical forward/backward,
so these tags will move the cursor in the wrong direction. If your workflow only types
text with pauses and pacing — no cursor repositioning — RTL scripts work fine.
Full RTL navigation support is planned for a future release.
Email Support
Have a bug report, feature request, or question we didn't answer? We'd love to hear from you.
[email protected] →