How to convert a pdf to markdown for importing into notion
- Step 1Confirm the PDF has selectable text — Highlight a sentence in the PDF. If it selects, it'll convert. If it's a scan and nothing selects, run PDF OCR first to add a text layer.
- Step 2Drop the PDF onto the converter — It converts in your browser with pdf.js automatically — there are no options. You'll get one
## Page Nheading per page. - Step 3Download the .md file — Save it (UTF-8,
text/markdown). This is the file you'll feed to Notion. - Step 4Import into Notion — In Notion, go to Settings → Import → Markdown & CSV (or the Import option at the bottom of the sidebar) and select your
.mdfile. Notion creates a new page from it. - Step 5Promote headings and tidy structure — The PDF's own titles imported as paragraphs. Convert the ones you want into Heading 1/2/3 blocks (type
/h1or use the#shortcut). The## Page Nmarkers are already Heading 2 — delete or keep them as section dividers. - Step 6Add images and re-create rich blocks — Images didn't import (Markdown import is text-only). Upload screenshots/figures into the page, and rebuild any tables, callouts, or toggles you need using Notion blocks.
What lands in Notion after import
How the converted Markdown maps to Notion blocks, and what you'll fix by hand.
| Element | In Notion? | Notes |
|---|---|---|
| Page body text | Yes (paragraph blocks) | Each extracted sentence imports as a Notion text block. |
## Page N markers | Yes (Heading 2) | Notion converts ## to a Heading 2 block — your page-by-page outline. |
| PDF's own titles / headings | As paragraphs | They were plain text in the .md, so Notion imports them as paragraphs. Promote to headings manually. |
| Bold / italic | No | Dropped during extraction, so nothing to import. Re-apply in Notion. |
| Tables | No | PDF tables flattened to text before import; no Notion table is created. Rebuild as a Notion table or database. |
| Images | No | Notion's Markdown import is text-only; images weren't extracted anyway. Upload them into the page. |
| Bullet / numbered lists | Mostly no | No Markdown list syntax is produced, so lines import as separate paragraphs. Convert to list blocks in Notion. |
| Links | As plain text | No [text](url) is generated, so URLs import as text. Re-link in Notion if needed. |
Output format and tier limits
No options — the same fixed output every time.
| Property | Value |
|---|---|
| Input | One .pdf at a time |
| Output | One .md file, UTF-8, text/markdown |
| Headings emitted | ## Page N (imports as Notion H2) |
| Notion import path | Settings → Import → Markdown & CSV |
| Free tier | 2 MB / 50 pages |
| Pro tier | 50 MB / 500 pages |
| Privacy | In-browser; 0 bytes uploaded |
Cookbook
Step-by-step patterns for getting PDF text into a tidy Notion page. Sample content is illustrative.
Convert and import a meeting-notes PDF
The fast path: convert, then use Notion's Markdown import to create a page in seconds.
Input: team-notes.pdf (4 pages) Output (team-notes.md): ## Page 1 Decisions We will ship the beta on Friday. Notion → Settings → Import → Markdown & CSV → team-notes.md Result: a page with an H2 'Page 1' and paragraph blocks.
Promote the PDF's headings inside Notion
Section titles import as paragraphs. Turn the important ones into Notion headings after import.
After import (as paragraphs): Decisions Action Items In Notion, select 'Decisions' → /h2 (or type '## ') → becomes a Heading 2 block Repeat for 'Action Items'.
Turn paragraph lines into a to-do list
Action items import as separate paragraph blocks. Convert them to checkboxes in one selection.
Imported paragraphs: Email the client the contract. Schedule the design review. Update the roadmap. In Notion: select all three → turn into 'To-do list' → three checkbox items.
Rebuild a table as a Notion database
A PDF table flattened to text and won't import as a table. Re-enter it as a Notion inline table or database.
Imported (flattened): Task Owner Due Write spec Ada Mon Review Bola Tue In Notion: create an inline table / database and re-key the rows. For bulk data, export with PDF to Excel and use Notion's CSV import into a database instead.
Scanned PDF: OCR before importing
A scanned PDF imports as empty page headings. OCR first so there's real text to import.
scanned-doc.pdf → import → page with just 'Page 1', 'Page 2' Fix: 1. PDF OCR (/pdf-tools/pdf-ocr) 2. Convert the OCR'd PDF here 3. Import the .md into Notion → real text blocks
Edge cases and what actually happens
PDF headings import as paragraphs, not Notion headings
By designOnly ## Page N is real Markdown heading syntax, so it becomes a Notion Heading 2. Your document's own titles arrived as plain text and import as paragraph blocks. Promote the ones you want to headings inside Notion.
Images don't import into Notion
ExpectedNotion's Markdown import handles text only, and images weren't extracted from the PDF in the first place. Upload screenshots and figures directly into the Notion page after import.
Tables don't become Notion tables
ExpectedPDF tables flatten to text before import, so no Notion table is created. Rebuild small tables as a Notion inline table; for bulk rows, use PDF to Excel and Notion's CSV import into a database.
Lists import as separate paragraphs
CosmeticBecause no Markdown -/1. syntax is produced, each line imports as its own paragraph block. Select the lines in Notion and convert them to a bulleted or to-do list in one action.
Scanned / image-only PDF
Empty outputNo text layer means the .md is just page headings, and Notion imports an empty-looking page. Run PDF OCR first, then convert and import.
File over 2 MB on the free tier
blockedFree caps input at 2 MB; larger PDFs are blocked on drop. Pro raises it to 50 MB. Split the PDF with PDF Split by Range and convert each part, importing them as separate Notion pages.
More than 50 pages on the free tier
blockedFree allows up to 50 pages; Pro up to 500. For a long PDF, extract a slice with PDF Extract Pages and import each as its own Notion page, or upgrade.
Notion makes one page, not a database
ExpectedMarkdown import always creates a standalone page. To populate a Notion database, don't use this path — export the data with PDF to Excel and use Notion's CSV import (or the API) into the database instead.
Bold/italic emphasis is gone
ExpectedEmphasis was dropped during extraction, so there's nothing for Notion to import as bold or italic. Re-apply formatting in Notion where the original document emphasised text.
Frequently asked questions
How do I import the converted file into Notion?
In Notion, open Settings → Import (or the Import button at the bottom of the sidebar), choose Markdown & CSV, and select the .md file this tool produced. Notion creates a new page from it, with ## Page N markers as Heading 2 blocks.
Will the PDF's headings become Notion headings?
No — only the ## Page N markers do. The document's own titles were plain text in the Markdown, so they import as paragraph blocks. Select them in Notion and turn them into Heading 1/2/3 blocks.
Do images from the PDF show up in Notion?
No. Notion's Markdown import is text-only, and the converter doesn't extract images anyway. Upload screenshots and figures into the page yourself, or export them first with PDF to PNG.
Can I import a PDF table as a Notion table?
Not via this path — PDF tables flatten to text. For a small table, rebuild it as a Notion inline table. For bulk data, use PDF to Excel and Notion's CSV import into a database.
Does Notion support all Markdown features?
Notion handles common Markdown — headings, bold, italic, lists, tables, code blocks — on import. But this tool only emits ## Page N headings and plain text, so most of the formatting work happens after import, inside Notion.
Can I import straight into a Notion database instead of a page?
No. Markdown import always creates a standalone page. To fill a database, export the structured data with PDF to Excel and use Notion's CSV import (or the Notion API) into that database.
My imported page is empty — what went wrong?
Almost certainly a scanned PDF with no text layer, so the Markdown was just page headings. Run PDF OCR first to add text, then convert and import again.
Why did my bullet points import as separate paragraphs?
The converter doesn't emit Markdown list syntax, so each line becomes its own paragraph block. Select the lines in Notion and convert them to a bulleted or to-do list in one step.
Is the PDF uploaded to a server during conversion?
No. Conversion runs in your browser via pdf.js, so the source PDF stays on your machine until you import the resulting Markdown into your private Notion workspace.
How big a PDF can I convert for Notion?
Free: 2 MB and 50 pages. Pro: 50 MB and 500 pages. Over the cap the file is blocked on drop — split it with PDF Split by Range and import the parts as separate Notion pages.
Should I keep the `## Page N` headings after importing?
Your call. They're useful as section dividers that mirror the original PDF pages, but if you're reorganising the content into a clean Notion structure you can delete them and use your own Heading blocks instead.
Is there a faster way than the web UI for repeated imports?
On Pro, pdf-to-markdown is a runner-builtin you can call locally via the @jadapps/runner, then import the resulting .md into Notion. The PDF is processed on your machine and never reaches JAD's servers.
Privacy first
All PDF processing runs locally in your browser using PDF-lib and pdf.js. No file is ever uploaded — only metadata counters are saved for signed-in dashboard stats.