Typing Practice With Your Own Text: What Happens After You Paste It
Some typing trainers can practise on your own text — a chapter you are studying, a paper, the transcript of a talk. In Mochi Type this gets real attention: named formats, a cleanup you can inspect, your original kept behind the cleaned copy, a bookmark that holds your place. Below is how it works — and where the answer is the same for any trainer, I say so.
Start with the disappointment, because it is the one most people arrive with. A PDF is not a typing text, and neither is a Word file or a Kindle book. Mochi Type takes plain text, Markdown, RTF and EPUB, plus whatever is on your clipboard and an empty document you type into yourself. That is the whole list. The good news is that macOS converts a Word file for you in one line, and Preview will hand you the text out of a PDF, so neither is a dead end — only a step you take first.
"We clean up your text" is a sentence that should come with a list, and here it does. Curly quotes, guillemets, three widths of dash, the ellipsis, five bullet shapes and twelve different Unicode spaces get flattened into things a keyboard can produce. Ligatures come apart. A handful of invisible characters are deleted. It is thirty-two substitutions, seven ligatures pulled apart and seven deletions, not a vibe.
Your original is kept, and that matters more than it sounds. Both versions live in the library — the text as it arrived and the cleaned one you type — so a cleanup option is a switch you can flip back, not a one-way edit of your material.
Two limits, said here rather than at the bottom. The free tier holds two texts of your own and stops each at its first 1,000 words. And code is not a use case for this feature: a backtick or a tilde in a snippet cannot currently be typed at all.
Want the version that already does all of this? Mochi Type is the Mac typing tutor I make. Drop in a file or paste a passage and it prepares the text for typing, keeps the original beside it, tells you before you start how many words your layout will have to skip, and remembers where you stopped. Custom texts arrived in version 1.1.2.
What it is not: a document converter, a PDF reader, or a way around DRM. It reads six file extensions and the clipboard, and everything outside that list is a job for something else on your Mac first.
The formats, by name, and the three that are missing
Here is the list, with nothing rounded off. Mochi Type imports .txt, .text, .md, .markdown, .rtf and .epub. You can also paste from the clipboard, or create an empty document and write into it — the sidebar’s plus button offers exactly those three routes: Add From File…, Paste Text, New Empty Text. Dropping a file onto the window runs the same pipeline as the open panel.
Not on the list: PDF, DOCX, ODT, Kindle’s .azw and .mobi, and import from a URL. Paste a link and all you have pasted is a link.
The absence worth explaining is PDF, because it is the format people most often have their reading in. A PDF does not store paragraphs. It stores glyphs at coordinates, and the paragraph you can see is something a reader reconstructs afterwards, which is why extracted PDF text so often arrives with hyphens welded into the middle of words and two columns interleaved line by line. Text that has been through that needs proofreading, and proofreading a book is a worse job than finding another copy of it.
The conversions, if you want them: both are free, and neither needs anything installed.
textutil -convert txt chapter.docx
That is Apple’s own converter, shipped with macOS — I ran it on macOS 26.6 against a .docx I generated for the test, and it wrote a .txt next to the original, one line per paragraph. It handles doc, docx, odt, rtf, html and wordml the same way. One line per paragraph is worth knowing: Mochi reads a single line break as a soft wrap, so a converted document arrives as one long paragraph unless you put a blank line between them first. For a PDF, open it in Preview, select the text, copy, and use Paste Text — then read the first few paragraphs before you commit, because that is where the column and hyphen damage shows up.
EPUB gets read directly, without a helper library. An EPUB is a ZIP file: I built a synthetic one to check the shape, and inside it are META-INF/container.xml, a package file listing the chapters in reading order, and the chapters themselves as XHTML. Mochi walks exactly that chain. The ceilings are 60 MB for the whole book and 20 MB for a single chapter, and ZIP64 archives are refused — an e-book approaching four gigabytes is not a typing text.
DRM is a wall, not a speed bump. If the book carries an encryption file covering its content documents, the import stops and says the book is copy-protected. Mochi does not remove DRM and never will. Font obfuscation, which is the common and harmless use of that same file, is allowed through and the book imports fine. In practice: Gutenberg and Standard Ebooks work, a store that sells unprotected EPUBs works, a Kindle purchase does not.
What cleanup does, itemized
Every trainer that takes your text does something to it. Almost none of them say what.
The first move is composition — accented letters are folded into single characters, so that everything after it is a one-character question rather than a letter-plus-accent question.
Then seven invisible characters are deleted rather than replaced: the zero-width family, the byte-order mark, the soft hyphen, and U+FFFD. That last one is the replacement character, and it earns its place on the list by being what arrives when you paste text exported from a chatbot or a badly encoded document — the literal black boxes in the middle of an otherwise clean paragraph.
Then the substitutions. Thirty-two typographic characters are replaced with plain ones your keyboard can actually produce: curly single and double quotes, the low-9 quotes German uses, the modifier apostrophe, guillemets, em dash, en dash and horizontal bar, the ellipsis, the prime and double prime, five bullet shapes, and twelve different Unicode spaces — no-break, narrow no-break, thin, hair, figure, punctuation, medium mathematical, and the em/en family. Every one of those spaces looks exactly like a space and none of them is one. Left in, they are unhittable keys sitting between your words.
Then seven ligatures come apart, so fi and ffl become the letters you would type.
Then the structure. A blank line means a new paragraph; a single line break inside a paragraph is treated as a soft wrap and becomes a space. This is the part that makes an e-book typeable at all, because it means you never press Return. Paragraph ends are marked and tinted rather than typed, so a session on your own text is one long line of words instead of a re-creation of somebody’s line wrapping.
There is exactly one switch over all of that, and it starts off: Remove headings & page numbers. Turned on, it drops short lines that carry no sentence-ending punctuation and look like structure — “Chapter” and “Part” openers, bare Roman numerals, bare numbers, and ALL-CAPS lines. Useful on a scanned book, harmful on a text where the capitals are meaningful, which is why it is a switch and why it is off until you ask.
Everything else is unconditional. There is no toggle for the typography pass, because turning it off only ever produced words nobody could type.
One floor to know about: a text needs 50 words to be startable. Anything shorter stays in the sidebar as a draft, labelled with how many words it has and how many it needs, rather than appearing in the toolbar as something you cannot begin.
Your original is kept, and the cleanup is a switch rather than an edit
When a web trainer offers to fix your text, it usually means a button that rewrites the box in front of you. Press it twice and you have lost the original.
Mochi keeps both. The file you picked is read once and copied; your own file on disk is never written to. Inside the library each text exists twice over — as imported, and as cleaned. Flip the headings switch and the clean copy is rebuilt from the original, which is why the switch is reversible in a way an apply button is not.
Manual edits are yours to make; the editor is a real text field. If you want to undo all of them, the button at the bottom left is Revert to Original…, and the confirmation says exactly what it does: the text is rebuilt from the originally imported file and manual edits are discarded. The other two are Save and Save & Start Typing.
The inspector on the right reports numbers rather than impressions: Language, Words, Size, Imported. The language is detected on import and it is a guess — a short text, or one with a lot of quoted foreign material, can be guessed wrong, so the field is a menu you can correct. It is worth correcting, because that language decides which keyboard layout the session assumes.
Accents are a layout problem, and the app tells you before you start
Here is the failure everybody else handles silently. Your text contains á, or ß, or ё, and your keyboard has no key for it. Type the paragraph and something has to give.
The usual answer is a fixed simplification table: every á becomes a, everywhere, for everyone. It works, and it also means a French user practising French gets their é quietly taken away.
Mochi’s version is gated on your layout. A character is simplified only when the layout you are practising on has no key for it — so á becomes a on a US keyboard and stays á on a Spanish one, ß becomes ss where there is no ß key, ё becomes е where there is no ё. The canonical text keeps its real accents; the simplification happens for the session, not to your file. The origin of this was a bug report shaped like a mystery: English words vanishing out of a Russian book.
Whatever cannot be reached even after simplification is skipped word by word, and the app says so in advance. The inspector counts them, names the layout it checked against, and shows examples — the line reads that N words use letters the layout cannot type and will be skipped while typing, followed by three of the actual words. Which is the correct way round: a number and three specimens before you start, rather than a mystery gap in paragraph nine.
What the free tier gives you, and where it loses
Two texts of your own, each stopping at its first 1,000 words.
Read that twice, because the shape of the list can mislead. Mochi’s own texts sit in the same sidebar — five bundled practice books in English, German, Russian and Ukrainian, a single starter story in every other language — and not one of them counts against your two. Only what you add does, and deleting one of yours frees the slot again. The 1,000-word ceiling is not so generous: on the free tier it applies to every text in that sidebar, the bundled ones included. After the one-time purchase ($12.99, no subscription) the caps are structural rather than commercial: 5 MB per text, 50 texts, 50 MB of library in total. A full-length novel as plain text runs around half a megabyte, so 5 MB is a book with room to spare.
And now the part where we lose. Two is a small number, and there are free web tools that hold more. AgileFingers is the honest comparison: its own custom-texts page, read on 9 August 2026, says you can enter up to 15 custom texts, and that entering a sixteenth quietly evicts the oldest from the bottom of the list. Fifteen with silent eviction versus two you delete by hand — if your use case is a rotating stack of short passages, that is a real advantage and it is not ours.
What you get for the smaller number is a different trade: the texts are files on your Mac rather than rows in somebody’s database, the cleanup is reversible, and nothing expires because nothing costs anyone rent.
One more free-tier detail, since it decides how a long text behaves: the start-position setting is locked to Resume where I left off, and the other two modes are part of the purchase. If keeping your place across weeks of a long book is the thing you actually came for, that story is its own page, along with the reading position and the built-in library.
Code is not a use case for this, and I would rather you heard it here
If you found this page looking for somewhere to drill your own code, stop here.
There is a defect, and it is squarely in the way. On layouts where the backtick, the tilde and the caret are ordinary characters — US QWERTY among them — Mochi treats a press of one as a pending dead-key accent, waiting for the vowel that will never come, and types nothing. The character stays on screen expecting to be typed, and there is no key that will match it: nothing else in the app is accepted in its place. The only way past is to press something else and take the error. One guaranteed mistake for every backtick, tilde and caret in the file, and none of them can ever be typed right.
Prose is unaffected, because prose does not contain backticks. But a page about typing your own text is precisely where somebody arrives with a file of shell commands, and I would rather write this sentence than take the sale. The bundled Python syntax workbook exists because it was written around the problem; your README.md was not.
Where the text goes afterwards
Everything above happens on your Mac. There is one qualification on that, and it is not a small one.
On a Mac signed into iCloud, sync starts switched on. With it on, an imported text travels as its full text — both copies, the original and the cleaned one — into your own private CloudKit database, in a zone named MochiCustomTexts. That database belongs to your Apple Account. I have no way to read it, and it does not eat into your iCloud Drive space. Private is not local, though. Something left the Mac, and if what you imported was an unpublished manuscript, that is worth knowing before you import it rather than after. The switch, and the four terminal checks that settle claims like this for any Mac app, are in the offline audit guide.
Where this leaves you
If your material is already plain text or an unprotected EPUB, any of the paste-box trainers will take it and so will this one, and the difference is not whether the text goes in. It is whether you can see what was done to it, get your original back, and find your place tomorrow.
If your material is a PDF or a Word file, do the conversion first — one textutil line, or a copy out of Preview — and then it stops being a format question.
If your material is code, this is not the tool, today, for the reason written above.
And if what you want is a stack of fifteen short passages to rotate through in a browser, AgileFingers already does that and does not charge you. Mochi Type is for the other case: a text you care about enough to work through properly, kept in one piece, on your own disk, with the original still sitting behind it.
Common questions
Can I use a PDF or a Word document for typing practice?
Not directly in Mochi Type — the import list is .txt, .text, .md, .markdown, .rtf and .epub, plus pasting and an empty document you type into. A Word file converts in one command on any Mac: `textutil -convert txt chapter.docx` writes chapter.txt beside it, and that imports. For a PDF, select the text in Preview, copy it, and paste — a PDF stores placed glyphs rather than paragraphs, so check the result before you commit to typing it.
What does a typing app's cleanup actually change in my text?
In Mochi Type, a fixed and countable list. Thirty-two typographic characters are replaced with plain ones — curly quotes, guillemets, three dash widths, the ellipsis, primes, five bullet shapes, and twelve different Unicode spaces. Seven ligatures are split back into letters, and seven invisible characters are deleted outright, including U+FFFD, the replacement character that arrives as literal boxes in text exported from a chatbot.
Does importing a text change or delete the original file?
It should not, and in Mochi Type it does not. The file you chose is read once and copied; your file on disk is never written to. Inside the library both versions are kept — the text as imported and the cleaned version you type — so changing a cleanup option rebuilds the clean copy from the original rather than editing your text in place. The button is Revert to Original.
How many of my own texts can I practise on for free?
In Mochi Type, two, and each stops at its first 1,000 words until you buy the app. The texts Mochi ships with sit in the same sidebar — five practice books in English, German, Russian and Ukrainian, a starter story in the other languages — and none of them count against your two. Deleting one of yours frees the slot. After the one-time purchase, the limits are 5 MB per text, 50 texts, and 50 MB of library in total.
Can I import an EPUB I bought from Kindle or Apple Books?
Only if it is DRM-free. Mochi Type reads the EPUB container itself and refuses any book whose encryption file covers the content documents, with the message that the book is copy-protected. It does not remove DRM and will not. Books from stores that sell unprotected EPUBs, and anything from Project Gutenberg or Standard Ebooks, import normally. Kindle's own .azw and .mobi files are not on the list at all.
Is typing practice on your own text good for practising code?
Not in Mochi Type, and this is a defect rather than a policy. On layouts where the backtick, tilde and caret are ordinary characters — US QWERTY among them — the app treats those presses as pending dead-key accents and types nothing, and no other key is accepted in their place — so each one in a pasted snippet costs you a deliberate error to get past. Prose imports fine. For code drills, use something built for it.