Premium apps Part of Paperwell

PastePort — Formatting converter

Move bold, italic, links and code between Markdown, Slack, WhatsApp and plain text.

Try an example: Try an example

More about this tool

How it works

Convert a bounded set of nested text formatting, fenced code and links with a visual preview and explicit reports of unsupported formatting.

  • A bounded original parser handles paired bold/italic/strike markers, nested combinations, code spans, fenced code and HTTP(S) links. Generated HTML previews escape source text and use only constructed elements.
  • Markdown accepts variable backtick and tilde code fences and equal-length code-span delimiters. Literal markers are escaped when converting to Markdown. The preview parses the converted destination text; same-format output preserves the original bytes. Headings become bold or plain lines, images become alt text and tables remain text. This bounded dialect is not a complete platform rich-text implementation; review warnings and test important content in the destination.

Part of Paperwell

  • Paperwell Document studio: PDFs, OCR, redaction, forms & contract reading

    Your paperwork in one dossier: PDF tools, OCR, redaction, forms and contract reading.

    Open Paperwell

How to use PastePort

Convert bold, italic, strikethrough, code and links between Markdown, Slack, WhatsApp and plain text, with a preview and warnings for anything that cannot be carried over.

What it is for

You wrote release notes in Markdown and now need them in Slack, or a formatted WhatsApp message should become a clean Markdown note. Each platform uses its own markers: bold is **text** in Markdown, *text* in Slack and WhatsApp; a link is [label](url) in Markdown, <url|label> in Slack and has no label at all in WhatsApp. Pasting across usually leaves stray asterisks behind. This tool converts the common inline formatting, code spans, fenced code blocks and links from one dialect to another, shows a preview of the result, and lists everything that could not be carried over.

It handles a deliberately bounded set of formatting. It is not a full rich-text engine for every platform feature, so test important messages in the destination before you send them to many people.

Worked example

The default converts the Markdown text "Hello _world_" plus a paragraph "A useful link." From Markdown To Slack. The Converted text is:

*Hello* _world_

A <https://usefulweb.site|useful link>.

The Formatting preview shows "Hello" in bold, "world" in italics and "useful link" as a link.

A meeting note from Markdown to WhatsApp: "Meeting moved to _Friday_." followed by a list with "Bring the budget.xlsx" and "See agenda". Result:

*Meeting* moved to _Friday_.

- Bring the `budget.xlsx`
- See agenda (https://example.com/agenda)

WhatsApp cannot hide a URL behind a label, so the link becomes "agenda (URL)". No warnings appear, because everything had a WhatsApp equivalent.

A harder case, Markdown to Slack with a heading "# Release notes", a small table, an image and "~~old~~ *both", produces three warnings: "Headings become bold lines; heading levels are not retained.", "Images become their alternative text." and "Tables remain text; column alignment depends on the destination." The heading becomes `Release notes, the image becomes "logo", and the text becomes ~old~ _both_*`.

How to read the result

  • Converted text is what you paste into the destination; Copy text puts it on the clipboard.
  • Formatting preview renders the converted text as the destination would show it. If it looks wrong here, it will look wrong there.
  • Warnings name every feature that was changed or lost. No warning means all detected formatting was carried over.
  • Exports: Text file, result JSON and a print or PDF view.

Tips and common mistakes

  • Pick the right From dialect. A single *star* means italic in Markdown but bold in Slack and WhatsApp.
  • Converting to Markdown escapes literal asterisks and underscores, so a filename like my_file_name does not turn italic.
  • Code spans and fenced code blocks are copied unchanged; formatting markers inside code stay literal.
  • Converting to Plain text removes all markers and is the safest choice for SMS or forms.
  • When From and To are the same, the text is returned byte for byte.
  • Only HTTP and HTTPS links are converted; an ftp: or mailto: link stays exactly as written.

FAQ

WhatsApp shows raw URLs only. The tool keeps the label as text and adds the URL in brackets, so no information is lost.

Does it support Slack mentions or emoji codes?

They are treated as ordinary text. Converting <@U123> to Markdown escapes the angle brackets, so check mentions in the destination.

Can I convert tables?

Tables stay as text with their pipe characters. Slack and WhatsApp have no table formatting, so a warning tells you.

Is nested formatting supported?

Yes, for example bold italic: ***both*** in Markdown becomes *_both_* in Slack.

Guide last updated:

For scripts and AI agents

  • JSON API: POST https://paperwellpasteport.usefulweb.app/api/v1/calculate (same calculation as this page)
  • Interface description: OpenAPI 3.1 · AI guide: llms.txt
  • MCP server (Streamable HTTP): https://paperwellpasteport.usefulweb.app/mcp · tool name paperwell_pasteport
Example request
curl -s -X POST https://paperwellpasteport.usefulweb.app/api/v1/calculate \
  -H 'content-type: application/json' \
  -d '{}'
Feedback · ideas & bug reports welcome