WordPress 7.1 replaces the internal Showdown parser with Marked when `pasteHandler()` converts pasted Markdown into blocks. Most output should be equivalent, but edge cases now follow CommonMark and GitHub Flavored Markdown behavior and can change block boundaries or inline markup.
Use this for editorial teams, documentation sites, developer blogs, migration tools, browser extensions, or plugins that call `pasteHandler()` directly or paste structured Markdown into the block editor.
Quick answer
Create one versioned Markdown fixture that includes every structure your editors use, paste it into WordPress 7.0.2 and 7.1, then compare parsed block names, attributes, saved HTML, reopening behavior, and frontend output. Review differences instead of assuming raw HTML equality is the only valid result.
What to check first
- Include headings, paragraphs, hard breaks, emphasis, nested lists, task lists, blockquotes, links, images, fenced code, inline code, tables, autolinks, and escaped characters.
- Add ambiguous fixtures such as underscores in identifiers, adjacent lists, mixed HTML, malformed tables, and fence markers inside code.
- Capture parsed block names and attributes after each paste on WordPress 7.0.2 and the latest 7.1 build.
- Save, reload, edit, undo, and republish the fixture to detect invalid block or recovery prompts.
- Compare frontend semantics, link destinations, code fidelity, table headers, and accessible reading order.
Diagnostic table
Use this table to keep the work practical. It connects the symptom to evidence and a verification step.
| Action | Evidence to collect | How to verify |
| Build a representative fixture | Include headings, paragraphs, hard breaks, emphasis, nested lists, task lists, blockquotes, links, images, fenced code, inline code, tables, autolinks, and escaped characters. | Every fixture structure becomes an expected block or documented raw HTML fallback. |
| Capture 7.0.2 blocks | Add ambiguous fixtures such as underscores in identifiers, adjacent lists, mixed HTML, malformed tables, and fence markers inside code. | Saved content reopens without a recovery prompt. |
| Paste into 7.1 | Capture parsed block names and attributes after each paste on WordPress 7.0.2 and the latest 7.1 build. | Links, code, tables, lists, and task states remain accurate. |
| Review meaningful diffs | Save, reload, edit, undo, and republish the fixture to detect invalid block or recovery prompts. | Editors can repeat the paste using the actual source application and browser. |
Test scenarios to run
Run the same controlled fixture across these branches. Record the expected result before the test so a surprising response is visible immediately.
| Scenario | Fixture | Expected result |
| Editorial basics | Headings, emphasis, links, images, lists, and blockquotes | Equivalent meaning and editable Core blocks after save and reopen |
| GFM structures | Task list, table, autolink, and fenced code | Expected GFM output with code and destinations unchanged |
| Ambiguous source | Underscores, mixed HTML, adjacent lists, and uneven table pipes | Reviewed block diff with no lost text or invalid block |
| Real clipboard | Copy the same fixture from the team writing application | The production clipboard route matches the approved browser result |
Why this usually happens
- Markdown dialects resolve ambiguous whitespace and delimiters differently.
- Equivalent rendered HTML can still produce different WordPress block boundaries.
- Direct `pasteHandler()` consumers may have tests coupled to old parser quirks.
Field notes
- Store the exact source fixture in version control with an expected block snapshot.
- Use synthetic links and code with no credentials.
- Include content copied from the real writing tool because clipboard MIME types can change the route.
Useful command or data shape
Adapt paths, IDs, and privacy handling to the site before running commands or storing data on production.
# Fixture heading
- [x] shipped item
- nested **detail**
| Field | Result |
| --- | --- |
| `event_id` | kept |
```js
const value = 'a_b';
```
Safe fix order
Do the work in a sequence that makes each result easy to prove. Stop if a step produces new evidence that changes the incident scope.
- Build a representative fixture
- Capture 7.0.2 blocks
- Paste into 7.1
- Review meaningful diffs
- Update tests and editorial notes
Decision rule
Hold the upgrade when pasted source loses content, changes a destination, breaks code, creates invalid blocks, or alters a publishing workflow with no reviewed fallback.
What to tell the client or owner
Share the source Markdown, clipboard source, browser, WordPress build, parsed blocks, saved HTML, frontend result, and smallest line that reproduces the difference.
Production verification checklist
- Every fixture structure becomes an expected block or documented raw HTML fallback.
- Saved content reopens without a recovery prompt.
- Links, code, tables, lists, and task states remain accurate.
- Editors can repeat the paste using the actual source application and browser.
Mistakes to avoid
- Do not test one simple heading and paragraph.
- Do not compare only the visual canvas.
- Do not put confidential production samples in a parser fixture.
- Do not normalize away a meaningful semantic difference before review.
Questions teams ask during testing
Do normal editors need to change how they paste Markdown?
Usually no, but teams with structured Markdown should test their common and ambiguous cases before upgrading.
Was `pasteHandler()` removed?
No. The internal parser changed, so direct consumers should rerun representative tests.
Should every HTML diff block release?
No. Judge content, semantics, blocks, editability, and frontend behavior. Some markup differences can be equivalent.
When HandL WP should help
HandL WP can build the editorial fixture, automate block snapshots, isolate parser differences, and verify that documentation remains editable and accurate after WordPress 7.1.
If this is active on a production site, test a WordPress 7.1 editorial workflow.
Related HandL WP guides
Use these related guides when the same issue touches tracking, security, checkout, or crawler visibility.
Helpful references