Why does formatting change when I paste between apps?
Formatting changes because copy and paste can carry several versions of the same selection, including plain text and rich HTML. The source app decides what to provide. The receiving app decides what to accept and how to turn it into its own document blocks. When those decisions do not match, headings become ordinary text, nested bullet points flatten, labelled links lose their destinations and tables can collapse into lines.
The visible design is not the portable part. A Word heading, a Notion block and a WhatsApp message use different structures even when they look similar on screen. Pasteful reads the useful clipboard representation, removes source styling, translates the document structure for the chosen destination and shows the result before copying. The receiving app still makes the final paste decision, so an important document should always be checked where it will be used.
- Headings arrive as plain or bold text
- Bullet points lose their nesting or markers
- Links keep the words but lose the address
- Tables turn into rows of unlabelled text
- Markdown characters such as # and ** remain visible
W3C: clipboard items can contain multiple representations · Microsoft: choose how Word handles pasted formatting
Copy and paste is a translation problem
Recent research describes the same failure as a mismatch between the representation an app copies and the representation another app needs. The 2026 MagicCopy paper uses tables moving between applications as its example: ordinary copy and paste does not account for the different data structures used by each tool, so people rebuild the format by hand. Its study involved sixteen participants moving data across three pairs of tools.
Google's 2026 Smart Paste paper examines code rather than documents, but measures the same post-paste repair step at much larger scale. The authors report that code was pasted four times more often than it was typed in Google's internal development environment, and that 72% of detected paste events received a local follow-up edit. Their deployed suggestion system reached a 45% acceptance rate. These systems do not validate Pasteful; they show that adapting pasted content to its destination is a recurring, measurable workflow problem.
MagicCopy: cross-app copy and paste research · Smart Paste: Google's post-paste repair research
How Pasteful tests the problem
Pasteful's formatter is checked against 3,244 deterministic records generated from 27 source documents. The corpus covers every source and destination currently catalogued by the shared formatting engine, then exercises the structures most likely to break during a copy: headings, nested lists, links, tables, code, block quotes, emoji, right-to-left text, invisible characters and malformed Markdown.
Every run produces ordered JSON Lines output. The checked-in output is hashed, so an intentional formatting change must update both the visible records and their SHA-256 baseline. A change that only appears on one JavaScript engine fails the parity contract instead of quietly reaching a user.
- 3,244 machine-readable records
- 27 stored and synthetic documents
- Every catalogued source and destination
- A generated document larger than 100 KB
- Byte-for-byte output with a reviewed SHA-256 baseline
Download the current baseline
The full JSONL file is published for developers, reviewers and researchers who want to inspect a result rather than rely on a marketing claim. A smaller JSON summary gives the record count, document count, format version and current checksum.
The current corpus checksum is c7d04baad993563969d6b714a2656073c912dae38f135e2532107c21edc857ee. The public build verifies that checksum before it publishes either download, so the summary and the records cannot drift apart unnoticed.
Download the complete JSONL corpus · Open the corpus summary
What the corpus does not prove
This corpus verifies Pasteful's deterministic parsing, cleanup and destination-output rules. It does not prove that every version of Word, Slack, WhatsApp or another receiving app will make the same clipboard choice. Desktop, web and mobile clients can accept different representations, and workspace settings can change the final paste.
A real compatibility result therefore needs a named destination client, operating system, version and test date. Pasteful's preview is useful evidence about the output it prepared; the receiving composer remains the final authority on what another person will see.
How to reproduce a destination test
Use one fixture that contains a heading, bold and italic text, a labelled link, nested bullets, a numbered list, a quote, inline code, a fenced code block and a small table. Paste it directly into the destination, record what survives, then run the same fixture through Pasteful and repeat the paste. Keep the source wording identical so the comparison measures formatting rather than editing.
Record the clipboard representations, destination client, operating system, app version and date. Check whether headings are semantic, links retain their destination, list depth survives, table values remain associated with their labels and code stays separate from prose. Redact personal material before sharing screenshots or results.
- Keep the fixture and wording identical
- Record client, operating system, version and date
- Compare direct paste with the Pasteful-prepared result
- Check meaning and structure, not only visual similarity
- Publish limitations beside successful results