위에서 파일을 고르면 바로 열립니다.준비됨 — 인터넷을 끊어도 이대로 동작합니다.이 브라우저에서는 쓸 수 없습니다 (나머지는 그대로 동작합니다).오프라인 저장에는 https:// 또는 localhost가 필요합니다.여기서는 저장할 수 없지만, 어느 쪽이든 올라가는 것은 없습니다.파일은 어디로도 가지 않았습니다. 파일 {total}개를 불러왔고 모두 이 사이트의 것입니다. {platform}무언가가 {hosts}에 접속했는데, 이 도구는 절대 그러지 않습니다. 살펴볼 만합니다. {platform}광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 파일이나 그 1바이트도 받지 않았습니다.광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 파일이나 그 1바이트도 받지 않았습니다.문제가 생겼습니다: {detail}. 처음부터 다시 하려면 페이지를 새로 고치세요.파일 {count}개를 읽는 중…파일 {count}개를 읽는 중…예시로 해 보기예시를 만드는 중…이 브라우저에서는 예시를 만들지 못했습니다. 대신 파일을 골라 주세요.
PDF to CSV — every table in it, bank statements included
Finds every table in a PDF and turns it into rows a spreadsheet can open.
The PDF you choose is opened and read in memory on this machine, by code served from this address, and the CSV is written the same way. Nothing here can make an upload, and there is no server on the other end of this page to receive one. Whatever the tables hold - an account number, a balance, a list of payees, a client's prices - stays in the tab.
✗ No upload
✗ No account
✓ Works offline
✓ Open source
✓ Files stay on your device
실시간 확인:확인 중…
오프라인:확인 중…
Don't take our word for it: open DevTools, watch the Network tab, and convert a PDF. Not one request carries a page, a row, a number or a filename. Or unplug from the internet and convert it anyway.
이 약속을 직접 확인하는 방법
The PDFs people convert are the ones least survivable as an upload. Nobody needs a converter for a table they could retype. The documents that come here are statements, invoices, payslips and reports: a list of everybody somebody paid and what was left afterwards, a client's prices, a company's numbers. Handing that to a stranger's server to have it turned into a spreadsheet means they have it, keep it, and are now a target worth attacking because of it. This page has no other half: there is nothing to send it to.
Where a table carries a running balance, every row is checked against it. Finding a table in a PDF is inference, not reading — which lines belong together, where one column ends, whether a line is a new row or the rest of the one above. Any of that can be wrong on a layout nobody here has seen. A statement's running balance is a proof against that: the balance on each row has to be the one above it plus that row's amount, and a single misread digit, dropped row or duplicated row breaks the chain at exactly the row where it happened. The page says how many rows held. Most tables have no balance, and for those the page says nothing — the rows are what the pages say, and nothing here claims more.
The tables come from the paper, not from a template per bank or form. There is no list of banks or layouts in this tool, and so no layout to be missing from. A page is split where a column of small print runs beside the main content, and each part is searched for runs of lines whose cells line up. That is why it works on a statement from a bank nobody has heard of or a report nobody has seen, and why it can fail on a table whose columns genuinely run into each other.
Passwords are not taken off here, and the page says where they can be. A PDF with a password on it is refused rather than opened. Taking a document's protection off is a different job from reading its tables, and doing it quietly would be a surprising thing for a tool to do on your behalf. What the page does instead is name the routes that make an unlocked copy without the file leaving your machine: the PDF unlocker on this site, which takes the password off in your own browser and rewrites nothing on the page, or printing it back to PDF from a browser or Preview. And it still says, in as many words, not to hand the document to any other website that offers to unlock it — that is the upload this page exists to avoid.
It cannot read a photograph of a page, and does not pretend to. A scan is a picture: the rows are pixels, and there is no text in the file to line up into columns. That is reported as what it is, with the ways round it that do not involve uploading anything — starting, for a statement, with the one most people have and do not think of, which is that the bank will almost certainly hand you the same statement as CSV directly. Reading letters out of a picture is OCR, and it is a different tool from this one.
What Google loads, and what it is not given. The ad and measurement scripts come from Google. Neither is handed anything about your document: not a file, not a table, not a row, a number, a filename or a page count. Every line that reads a PDF or writes a CSV is served from this origin and listed in the repository.
What the donate button loads, and what it is not given. The "Buy me a coffee" button in the header is drawn by a script from cdnjs.buymeacoffee.com and letters itself from Google Fonts. It is a link and nothing more: it reports no visit, and it is handed nothing about you or your documents. Nothing happens unless you click it, and what you would be clicking through to is somebody else's site.
It works offline. Disconnect from the network and everything on this page still functions. That is the simplest proof of all: a tool that sent your document away to be converted would stop.
직접 확인해 보세요. 위에 적은 어느 것도 그냥 믿으실 필요는 없습니다. 이 페이지는 저장소 안의 템플릿과 설정을 빌드 스크립트가 찍어 낸 결과이고, 그 스크립트는 누구나 읽고 직접 돌려 볼 수 있습니다. 결과물은 dist 브랜치에 그대로 올라가 있고요. 그래서 실제로 제공되는 파일과 소스를 빌드한 결과를 나란히 놓고 비교해 보실 수 있습니다:
먼저 읽어 볼 파일을 꼽자면, Content-Security-Policy는 config/site.toml, src/layout.js for how a page is split into regions without a single ruled line to go on, src/tables.js for how the tables and their columns are found, src/rows.js for how lines become rows, and src/check.js for the arithmetic that proves a statement. None of them can reach the network, and neither can the reader underneath them.
회사 보안 소프트웨어가 업로드를 경고한다면. 그것은 브라우저에서 파일이 선택되는 순간을 지켜보며, 페이지가 그것을 보낼 생각인지는 알 수 없습니다 — 그래서 고르는 순간에 경고합니다. 여기서는 아무것도 보내지 않습니다. 브라우저 개발자 도구를 열고 네트워크 탭으로 옮긴 뒤 파일을 골라 보세요. 그것을 실어 나르는 요청은 없고, 이 페이지 자체의 로컬 미리보기 말고는 요청 자체가 없습니다. 같은 확인을 IT 팀도 삼십 초면 할 수 있습니다.
1 Choose a PDF
Taking the password off, on your own machine
Banks often lock a statement with your date of birth or the last digits of an account number. Any of these gives you an unlocked copy; bring it back here and it will still have its text, which is what this tool needs.
The PDF Unlocker on this site — type the password there and it comes off in this browser, with nothing uploaded. It is the only one of these that rewrites nothing on the page, so the words stay exactly where your bank put them.
Windows — open the PDF in Chrome or Edge, type the password, then Print and choose Save as PDF as the printer.
macOS — open it in Preview, type the password, then File → Export as PDF.
Do not use any other website that offers to unlock it. That means uploading the statement, which is the one thing this page exists to avoid. The page linked above is not one of those: it has no server to upload anything to, and it keeps working with the network unplugged.
This one is a photograph, and what to do instead
There is no text in the file — its pages are pictures, from a scanner or a phone. Reading letters out of a picture is a different job from reading a table out of text, and this tool does not pretend to do it. In rough order of how well they work:
Ask your bank for the data instead of the paper. Nearly every online bank will hand you the same statement as CSV, OFX or QIF. That skips this page altogether and is more accurate than any conversion of any picture could be.
Ask whoever sent it for the original PDF rather than a scan of the printout.
Or read the picture on your own machine. Windows' Snipping Tool, the Live Text built into macOS, and Acrobat's Recognise Text all do it without uploading anything. Then check every amount by eye: a misread digit does not look like an error, it looks like a number.
2 Check what it read
A PDF looks as though it holds tables and does not: it holds text placed at positions on a page, and the columns are strips of paper nobody printed in. So every table below was worked out rather than read. Where one of them carries a running balance, the line above the tables is the tool checking its own work — every row proved against the row before it.
That is not a PDF. This tool reads the tables out of a PDF.This PDF has a password on it. Taking that off is a different job from reading its tables, and this tool will not do it behind your back.Something on this page stopped working ({detail}). Reload and try again.This file could not be opened as a PDF ({detail}).This opened, but no pages could be found in it.There is no text in this PDF: its pages are pictures of pages.Nothing on these pages is laid out as a table — no two lines line up into columns — so there is nothing here to turn into rows.One table, {rows}, read from {pages}.{tables}, {rows} in all, read from {pages}.Table {n} · page {page} · {rows} · {columns}All {tables}, one after anotherTable {n}: {verdict}{rows} in {columns}{rows} in {tables}, one after another{n} row{n} rows{n} column{n} columns{n} table{n} tablesThe running balance adds up on every row, so the amounts were read correctly and no row was missed or counted twice.The running balance adds up on {held} of {links} rows. Check {where} against the PDF before you use this.row {n}rows {list}Worked out from a day past the twelfth in this document, so this is what it says rather than a guess.Every date in this document falls on or before the twelfth, so nothing in it says which way round they go. Change this if the dates below look wrong.Only the first {shown} rows of this table are shown here. The download has all of them.{name}.csvDates with a year written as YYYY-MM-DDAmounts as plain signed numbersUTF-8, RFC 4180 quoting{n} page{n} pages{n} bytes{n} KB{n} MBa Flate stream would not decompress ({detail})this browser has no CompressionStreaman LZW stream starts with an undefined codethis stream is encryptedan unknown filter, /{name}nested too deeplyran off the endunexpected {found} at {at}unexpected byte 0x{hex} at {at}a stream with no endstreamno obj keyword at {at}no startxrefnot an xref sectionan xref stream with no /Wan xref stream with zero-width fieldsThis does not start like a PDF: there is no %PDF- header.This PDF is encrypted.This file has no document catalogue. It is either not a PDF or damaged past what can be repaired here.
원하는 결과가 나왔나요?
무엇이 잘못됐나요?
고맙습니다 — 큰 도움이 됩니다.
보내지는 것은 답변뿐이고, 그것도 버튼을 눌렀을 때만입니다. 파일도, 파일 이름도, 파일에 관한 어떤 정보도 보내지 않습니다.
# PDF to CSV — every table in it, bank statements included
Finds every table in a PDF and turns it into rows a spreadsheet can open.
> Turn the tables in a PDF into a CSV: bank and card statements, invoices, price lists, reports. Every table on every page is found from where its text sits, and a running balance is checked row by row where there is one. Nothing is uploaded.
이 페이지는 브라우저 안에서만 동작하는 대화형 도구입니다(https://abox.tools/ko/pdf-to-csv/). 도구에 넘긴 어떤 것도 업로드되지 않습니다. 아래는 이 페이지가 도구에 대해 글로 설명하는 내용 전부입니다. 도구를 쓰려면 이 주소를 여세요.
## documents **절대 업로드되지 않습니다**. 서버가 아예 없으니까요.
The PDF you choose is opened and read in memory on this machine, by code served from this address, and the CSV is written the same way. Nothing here can make an upload, and there is no server on the other end of this page to receive one. Whatever the tables hold - an account number, a balance, a list of payees, a client's prices - stays in the tab.
- ✗ No upload
- ✗ No account
- ✓ Works offline
- ✓ Open source
- ✓ Files stay on your device
## How to turn the tables in a PDF into a CSV
1. **Choose the PDF.** One at a time. It is read straight off your disk by the browser — every page of it, before anything is decided, because whether a document writes 1.240,00 or 1,240.00 and which way round its dates go are facts about the document rather than about any one page.
2. **Look at the tables it found.** Every table on every page, each with its own columns and its own headings where the page printed any. A table that runs across two sections or two pages under the same headings is one table, and the headings are not repeated in the middle of it. A cell that wrapped onto a second line is folded back into its row. Totals, subtotals and labels come through as the rows they are on the page.
3. **Pick one, or take them all.** When there is more than one table, the control above them chooses which goes into the CSV — all of them, one after another, or just the one you came for. If a table carries a running balance, the line above the tables says whether every row added up. Dates that carry their year come out as YYYY-MM-DD and amounts as plain signed numbers; a date with no year is left exactly as it was printed, because the year it belongs to would be a guess.
4. **Take the CSV.** It is written to RFC 4180 — proper quoting, CRLF line endings — as UTF-8 with a byte order mark, so Excel opens it with the currency symbols intact instead of turning them into letters. With all the tables in one file, each keeps its own heading row and an empty line comes between them. Nothing was uploaded to produce it.
## 자세한 설명
[Is it safe to upload a bank statement?](https://abox.tools/ko/guides/is-it-safe-to-upload-a-bank-statement/): A statement is every payee, every amount and your balance in one file. Here is what a converter receives, what the careful ones do with it, and how to tell whether the upload needed to happen at all.
## 자주 묻는 질문
### How does it find tables when the PDF has no table in it?
From where the text sits. A page is first split wherever a column of small print runs beside the main content — told apart from a column of the table by the fact that the table's cells share a baseline exactly, and the small print only ever sits beside them by accident. Then each part is walked from top to bottom and cut at headings and gaps into blocks, and the columns of each block are the places where several lines agree a cell starts or ends. Blocks with the same columns are joined back into one table. There is no per-bank or per-form template, so there is no layout it has not been taught.
### Does it only work on bank statements?
No. It started as a statement converter and was rebuilt to find every table in a document, because the first real statement put through it had two transactions and five other tables, and a tool that only wanted the transactions found nothing at all. Invoices, price lists, timetables, results and reports are tables the same way. What a statement adds is a running balance, and where one is there the tool checks every row against it.
### What happens to a description too long for its column?
It is folded back into its row, which is the failure that makes most PDF-to-CSV output unusable. A line with a single cell of words in it, set close to a row, is that row's cell continued — folded into the row below it rather than the one above when it sits nearer to that one, which is how a long label above its value is printed. A line with more than one cell, or with a number in it, is a row of its own.
### How can it possibly know whether it read my statement correctly?
Because most statements carry a running balance, and a running balance is a proof rather than a decoration. If the balance printed on every row really is the balance on the row above plus that row's amount, then the amounts were read correctly, the rows were separated correctly and none was dropped or counted twice — any of those mistakes breaks the chain at the row where it happened. The tool does that subtraction on every row and tells you the result. It also finds the balance column that way rather than by reading a heading, so a table that passes has necessarily had its columns identified correctly. A table without a balance cannot be checked this way, and the page does not pretend it was.
### My dates came out wrong. 03/04 is the fourth of March, not the third of April.
Change the control above the tables and everything is redone instantly. A numeric date is genuinely ambiguous, and the tool settles it from the document rather than from your location: if any date anywhere in it has a day past the twelfth, that one row settles the order for all of them, and the page says so. When every date falls on or before the twelfth there is nothing in the file that could tell them apart, so it says *that*, and picks day-first until you say otherwise. A date printed without a year, as card statements print them, is left exactly as it was written.
### Does it work on a scanned PDF?
No, and it says so rather than handing you an empty file. A scan is a photograph: the rows are pixels and there is no text to line up. The page then shows you what to do instead, and for a statement the first suggestion is the one most people overlook — nearly every online bank will give you the same statement as CSV, OFX or QIF directly, which needs no conversion and is more accurate than reading any picture could be.
### Can it open a password-protected PDF?
No, and that is deliberate. Banks lock a lot of statements, usually with a date of birth or the last digits of an account number. Taking that protection off is a different job from reading a table, so this tool refuses and points you at the ways to do it without the file leaving your machine. The best of them is the [PDF unlocker](https://abox.tools/ko/unlock-pdf/) on this site: it takes the password off in your own browser and changes nothing on the pages, so the text arrives here exactly where it was printed. Printing the document back to PDF from Chrome or Edge, or exporting it from Preview on a Mac, also works. Do not use any other website that offers to unlock it — that is an upload of the exact document this page exists to keep off the internet.
### Is my PDF uploaded anywhere?
No. The file is read and the CSV is written by your own browser on your own hardware. There is no server side to this tool, and the page's `Content-Security-Policy` names every address it may contact — none of them belongs to this site. The simplest proof is to unplug from the internet and convert a PDF anyway.
### Why is there a strange character at the start of the CSV?
That is a byte order mark, and it is there on purpose. Excel on Windows reads a CSV without one using the system's legacy code page, so a table in pounds or euros arrives with the currency symbol replaced by a letter. The mark tells it the file is UTF-8. Every reader that matters skips it silently; a parser strict enough to show it will hand back a first column heading with an invisible character on the front, which is the cost of the trade.
### Is there a size limit, and does it cost anything?
There is no limit written into the tool. The limit is your own machine: the document is held in memory while it is read, which a laptop will do with several hundred pages without complaint. It is free, there is no account, no sign-in and no trial. The site carries advertising, which is what pays for it; the ads are not given anything about your documents.
### Does it work offline?
Yes. Load the page once, then disconnect from the internet and it keeps working. That is also the simplest way to prove nothing is being uploaded: a tool that sent your document away to be converted would stop the moment you unplugged.
## 이 약속을 직접 확인하는 방법
- **The PDFs people convert are the ones least survivable as an upload.** Nobody needs a converter for a table they could retype. The documents that come here are statements, invoices, payslips and reports: a list of everybody somebody paid and what was left afterwards, a client's prices, a company's numbers. Handing that to a stranger's server to have it turned into a spreadsheet means they have it, keep it, and are now a target worth attacking because of it. This page has no other half: there is nothing to send it to.
- **Where a table carries a running balance, every row is checked against it.** Finding a table in a PDF is inference, not reading — which lines belong together, where one column ends, whether a line is a new row or the rest of the one above. Any of that can be wrong on a layout nobody here has seen. A statement's running balance is a proof against that: the balance on each row has to be the one above it plus that row's amount, and a single misread digit, dropped row or duplicated row breaks the chain at exactly the row where it happened. The page says how many rows held. Most tables have no balance, and for those the page says nothing — the rows are what the pages say, and nothing here claims more.
- **The tables come from the paper, not from a template per bank or form.** There is no list of banks or layouts in this tool, and so no layout to be missing from. A page is split where a column of small print runs beside the main content, and each part is searched for runs of lines whose cells line up. That is why it works on a statement from a bank nobody has heard of or a report nobody has seen, and why it can fail on a table whose columns genuinely run into each other.
- **Passwords are not taken off here, and the page says where they can be.** A PDF with a password on it is refused rather than opened. Taking a document's protection off is a different job from reading its tables, and doing it quietly would be a surprising thing for a tool to do on your behalf. What the page does instead is name the routes that make an unlocked copy without the file leaving your machine: the [PDF unlocker](https://abox.tools/ko/unlock-pdf/) on this site, which takes the password off in your own browser and rewrites nothing on the page, or printing it back to PDF from a browser or Preview. And it still says, in as many words, not to hand the document to any other website that offers to unlock it — that is the upload this page exists to avoid.
- **It cannot read a photograph of a page, and does not pretend to.** A scan is a picture: the rows are pixels, and there is no text in the file to line up into columns. That is reported as what it is, with the ways round it that do not involve uploading anything — starting, for a statement, with the one most people have and do not think of, which is that the bank will almost certainly hand you the same statement as CSV directly. Reading letters out of a picture is OCR, and it is a different tool from this one.
- **What Google loads, and what it is not given.** The ad and measurement scripts come from Google. Neither is handed anything about your document: not a file, not a table, not a row, a number, a filename or a page count. Every line that reads a PDF or writes a CSV is served from this origin and listed in the repository.
- **What the donate button loads, and what it is not given.** The "Buy me a coffee" button in the header is drawn by a script from cdnjs.buymeacoffee.com and letters itself from Google Fonts. It is a link and nothing more: it reports no visit, and it is handed nothing about you or your documents. Nothing happens unless you click it, and what you would be clicking through to is somebody else's site.
- **It works offline.** Disconnect from the network and everything on this page still functions. That is the simplest proof of all: a tool that sent your document away to be converted would stop.
**직접 확인해 보세요.** 위에 적은 어느 것도 그냥 믿으실 필요는 없습니다. 이 페이지는 저장소 안의 템플릿과 설정을 빌드 스크립트가 찍어 낸 결과이고, 그 스크립트는 누구나 읽고 직접 돌려 볼 수 있습니다. 결과물은 `dist` 브랜치에 그대로 올라가 있고요. 그래서 실제로 제공되는 파일과 소스를 빌드한 결과를 나란히 놓고 비교해 보실 수 있습니다: https://github.com/A-Box-of-Tools/website
먼저 읽어 볼 파일을 꼽자면, Content-Security-Policy는 `config/site.toml`, `src/layout.js` for how a page is split into regions without a single ruled line to go on, `src/tables.js` for how the tables and their columns are found, `src/rows.js` for how lines become rows, and `src/check.js` for the arithmetic that proves a statement. None of them can reach the network, and neither can the reader underneath them.
How to turn the tables in a PDF into a CSV
Choose the PDF. One at a time. It is read straight off your disk by the browser — every page of it, before anything is decided, because whether a document writes 1.240,00 or 1,240.00 and which way round its dates go are facts about the document rather than about any one page.
Look at the tables it found. Every table on every page, each with its own columns and its own headings where the page printed any. A table that runs across two sections or two pages under the same headings is one table, and the headings are not repeated in the middle of it. A cell that wrapped onto a second line is folded back into its row. Totals, subtotals and labels come through as the rows they are on the page.
Pick one, or take them all. When there is more than one table, the control above them chooses which goes into the CSV — all of them, one after another, or just the one you came for. If a table carries a running balance, the line above the tables says whether every row added up. Dates that carry their year come out as YYYY-MM-DD and amounts as plain signed numbers; a date with no year is left exactly as it was printed, because the year it belongs to would be a guess.
Take the CSV. It is written to RFC 4180 — proper quoting, CRLF line endings — as UTF-8 with a byte order mark, so Excel opens it with the currency symbols intact instead of turning them into letters. With all the tables in one file, each keeps its own heading row and an empty line comes between them. Nothing was uploaded to produce it.
자세한 설명
Is it safe to upload a bank statement?A statement is every payee, every amount and your balance in one file. Here is what a converter receives, what the careful ones do with it, and how to tell whether the upload needed to happen at all.
자주 묻는 질문
How does it find tables when the PDF has no table in it?
From where the text sits. A page is first split wherever a column of small print runs beside the main content — told apart from a column of the table by the fact that the table's cells share a baseline exactly, and the small print only ever sits beside them by accident. Then each part is walked from top to bottom and cut at headings and gaps into blocks, and the columns of each block are the places where several lines agree a cell starts or ends. Blocks with the same columns are joined back into one table. There is no per-bank or per-form template, so there is no layout it has not been taught.
Does it only work on bank statements?
No. It started as a statement converter and was rebuilt to find every table in a document, because the first real statement put through it had two transactions and five other tables, and a tool that only wanted the transactions found nothing at all. Invoices, price lists, timetables, results and reports are tables the same way. What a statement adds is a running balance, and where one is there the tool checks every row against it.
What happens to a description too long for its column?
It is folded back into its row, which is the failure that makes most PDF-to-CSV output unusable. A line with a single cell of words in it, set close to a row, is that row's cell continued — folded into the row below it rather than the one above when it sits nearer to that one, which is how a long label above its value is printed. A line with more than one cell, or with a number in it, is a row of its own.
How can it possibly know whether it read my statement correctly?
Because most statements carry a running balance, and a running balance is a proof rather than a decoration. If the balance printed on every row really is the balance on the row above plus that row's amount, then the amounts were read correctly, the rows were separated correctly and none was dropped or counted twice — any of those mistakes breaks the chain at the row where it happened. The tool does that subtraction on every row and tells you the result. It also finds the balance column that way rather than by reading a heading, so a table that passes has necessarily had its columns identified correctly. A table without a balance cannot be checked this way, and the page does not pretend it was.
My dates came out wrong. 03/04 is the fourth of March, not the third of April.
Change the control above the tables and everything is redone instantly. A numeric date is genuinely ambiguous, and the tool settles it from the document rather than from your location: if any date anywhere in it has a day past the twelfth, that one row settles the order for all of them, and the page says so. When every date falls on or before the twelfth there is nothing in the file that could tell them apart, so it says that, and picks day-first until you say otherwise. A date printed without a year, as card statements print them, is left exactly as it was written.
Does it work on a scanned PDF?
No, and it says so rather than handing you an empty file. A scan is a photograph: the rows are pixels and there is no text to line up. The page then shows you what to do instead, and for a statement the first suggestion is the one most people overlook — nearly every online bank will give you the same statement as CSV, OFX or QIF directly, which needs no conversion and is more accurate than reading any picture could be.
Can it open a password-protected PDF?
No, and that is deliberate. Banks lock a lot of statements, usually with a date of birth or the last digits of an account number. Taking that protection off is a different job from reading a table, so this tool refuses and points you at the ways to do it without the file leaving your machine. The best of them is the PDF unlocker on this site: it takes the password off in your own browser and changes nothing on the pages, so the text arrives here exactly where it was printed. Printing the document back to PDF from Chrome or Edge, or exporting it from Preview on a Mac, also works. Do not use any other website that offers to unlock it — that is an upload of the exact document this page exists to keep off the internet.
Is my PDF uploaded anywhere?
No. The file is read and the CSV is written by your own browser on your own hardware. There is no server side to this tool, and the page's Content-Security-Policy names every address it may contact — none of them belongs to this site. The simplest proof is to unplug from the internet and convert a PDF anyway.
Why is there a strange character at the start of the CSV?
That is a byte order mark, and it is there on purpose. Excel on Windows reads a CSV without one using the system's legacy code page, so a table in pounds or euros arrives with the currency symbol replaced by a letter. The mark tells it the file is UTF-8. Every reader that matters skips it silently; a parser strict enough to show it will hand back a first column heading with an invisible character on the front, which is the cost of the trade.
Is there a size limit, and does it cost anything?
There is no limit written into the tool. The limit is your own machine: the document is held in memory while it is read, which a laptop will do with several hundred pages without complaint. It is free, there is no account, no sign-in and no trial. The site carries advertising, which is what pays for it; the ads are not given anything about your documents.
Does it work offline?
Yes. Load the page once, then disconnect from the internet and it keeps working. That is also the simplest way to prove nothing is being uploaded: a tool that sent your document away to be converted would stop the moment you unplugged.