AI Demos Research — the structured-intelligence platform. Every verdict on these pages opens to the execution behind it.
Graded 18 October 2026

Does Firecrawl preserve a simple table when converting a PDF to Markdown?

Firecrawl preserved the structure of the simple table in this test. It returned all four headers and eight rows, with the values under the correct headers.

1 of 1 test case passed

Every test case in this scenario has a result.

Pass rate100%1 of 1 gradable
Coverage1 of 1test case with a result
1PassDid everything it was expected to do.
0FailNo test case failed.
0Not gradableEvery result here could be graded.
0UntestedEvery test case in this scenario has a result.
The pass rate is a summary. The evidence is the test case below: what we sent, what we checked, what the tool returned, and the proof.

The test case

Each test case is judged on its own: Pass, Fail, Not gradable, or Untested. The scenario result above is based on this test case.

Simple table — structure retainedPassEvidence
What we sent
InputDocument (PDF)
Input PDF: three-page charges schedule with a four-column table
Open the PDF ↗
What the tool returned
Markdown
| Determination | Method | Turnaround | Charge per sample |
| --- | --- | --- | --- |
| Total suspended solids | KAL-M04 | 2 days | £18.40 |
| Chloride | KAL-M11 | 3 days | £21.75 |
| Ammoniacal nitrogen | KAL-M12 | 4 days | £26.50 |
| Total oxidised nitrogen | KAL-M13 | 5 days | £29.20 |
| Orthophosphate | KAL-M15 | 6 days | £31.60 |
| Dissolved organic carbon | KAL-M22 | 7 days | £44.05 |
| Metals suite, eleven elements | KAL-M31 | 8 days | £96.80 |
| Particle size distribution | KAL-M47 | 10 days | £58.35 |

Markdown output: the returned pipe table

Copied from Output file (Markdown), lines 8–17

Open the Markdown file ↗
JSON
{
  "scrapeId": "01a08b71-8784-72a3-be00-e0ab421e3784",
  "sourceURL": "schedule_of_analysis_charges_2026.pdf",
  "url": "https://parse.firecrawl.dev/uploads/schedule_of_analysis_charges_2026.pdf",
  "statusCode": 200,
  "numPages": 3,
  "totalPages": 3,
  "title": "Schedule of Analysis Charges 2026",
  "contentType": "application/pdf",
  "proxyUsed": "basic",
  "creditsUsed": 3,
  "concurrencyLimited": false
}

API response: converted charges schedule and source metadata

Copied from Output file (JSON), data › metadata

Open the whole JSON file ↗
Expected vs. Found
✓Expected: The table retained as a table, with correct headers, rows, columns and values.Found: Firecrawl returned one table with four headers—determination, method, turnaround and charge per sample—and eight rows. No values were invented, split or dropped.
Supporting proof
Proof 1Screenshot
Source and output comparison: page one of the charges schedule
Open original ↗
Proof 2Screenshot
Run card: conversion settings, timing and result
Open original ↗
Why this result

The result is a pass because the table retained its headers and all eight rows, with each cell in the correct column.

Also observed in this test case

Letterhead omitted. The page-one letterhead, including the company name, address, telephone number and email address, is absent from the output. The converted document opens at the title.

Tested by Chandresh Bisht · evidence dated 10 September 2026

Configuration and setup

How this tool was set up for the run and what the test needed in place. Each row is a fact from the run's records; a fact the records do not hold is left out, not guessed.

Software that produced the output
Firecrawl
Build or version
not exposed (Firecrawl API v2, /v2/parse)
Plan or tier
free tier
Surface
API
Set up before the run
A small PDF with one simple, clearly formatted table was converted to Markdown using the default pipeline in one pass, with the complete PDF sent and no per-tool tuning.
Pipeline
single pass; no options set (the product's defaults); Markdown format only
Tested
10 September 2026 · Chandresh Bisht

How this scenario is graded

How we decide Pass, Fail and Not gradable. The same rules apply to every tool tested on this scenario.

How results are decided

Each test case gets one result per tool: Pass, Fail or Not gradable. A test case we haven't run yet shows Untested. There are no partial results.

The rules
  • Pass: the tool did everything the test expected, and nothing it said contradicts the correct answer.
  • Fail: at least one expected behaviour clearly didn't happen; the test case's result says which one and quotes the tool.
  • Not gradable: our evidence couldn't settle the outcome (for example a record we needed is missing). It is never counted as a fail, and the test case's result says what's missing.

Where this sits in the benchmark

This page is one cell of a larger study: one tool, one scenario. Only this benchmark's frame appears here.

History of this result

What has happened to this result since it was first published. Runs and grades are never overwritten: a retest or a re-grade publishes a new result and keeps the earlier one readable.

from the publication record
11 November 2026First publishedConverting a complex PDF into clean Markdown with a hosted API v1

Act on this result

Nothing filed here edits the run or the grade. A challenge opens a review, and a review can produce a new run or a re-grade — which becomes the current result and leaves this one in the history.

This matches what I see

You run the same kind of test against your own setup and get the same behaviour.

Agree →
This does not match

Yours behaves differently. Tell us what you got, with a screenshot if you have one.

Disagree →
Point out an issue

Something here is wrong — a reference value, a transcription, a grade.

Report an issue →
Request a retest

On a newer build, a larger dataset, or your own setup.

Request a retest →
We have fixed this

Tell us what changed and we schedule a rerun of the failing test case. The old result stays as history.

Vendor notice →
Filed against this evidenceNothing yet. Challenges, counter-evidence and fix notices appear here with their outcome, and stay on the page after they are resolved.
Cite this result
aidemos.com/benchmarks/pdf-to-markdown-apis/results/firecrawl/a-simple-clearly-formatted-table · 1 pass · 0 fail · coverage 1/1 · graded 2026-10-18

The same record is available as structured data through the AI Demos MCP server, with the counts, the coverage and every per-test-case reason carried as fields.

Verify the proof files

These files support this result. Open a file to inspect the original evidence.

Input · Document (PDF) ↗application/pdf · 92 KB
Proof 1 · Screenshot ↗image/png · 582 KB
Output file (Markdown) ↗text/markdown · 8 KB
Output file (JSON) ↗application/json · 9 KB
Proof 2 · Screenshot ↗image/png · 91 KB
File fingerprints (SHA-256)

A fingerprint identifies the exact file used for this result.

Input · Document (PDF)2f2a8244eb2e45042de1c4652eeebc8b14c579f55c5a1a8b73e7b21e051e5ee7
Proof 1 · Screenshotcfe98f4d1c5eca1f393e654d9f46abf3a231b1617c0c824c18c9ef52abc04eff
Output file (Markdown)f89e976934f326c1806ae442c32e3078d8cee64e9e306e7afd9b6be90f247da0
Output file (JSON)4a16fb30e49e031dc7a16c69b7f046e8b370c27be10c70ca66b7854483d3d5fb
Proof 2 · Screenshotf0261c66e17f456af214518a6749b5f090ce85c65a25dfee2621ad07e5faf1ec