<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tidy Byte Tools</title>
    <description>The latest articles on DEV Community by Tidy Byte Tools (@tidybytetools).</description>
    <link>https://dev.to/tidybytetools</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4238083%2F9baa69a9-e2fd-483c-bcf6-227aa13b7615.png</url>
      <title>DEV Community: Tidy Byte Tools</title>
      <link>https://dev.to/tidybytetools</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tidybytetools"/>
    <language>en</language>
    <item>
      <title>How to encode or decode Base64 (the easy ways)</title>
      <dc:creator>Tidy Byte Tools</dc:creator>
      <pubDate>Wed, 11 Nov 2026 02:56:13 +0000</pubDate>
      <link>https://dev.to/tidybytetools/how-to-encode-or-decode-base64-the-easy-ways-i23</link>
      <guid>https://dev.to/tidybytetools/how-to-encode-or-decode-base64-the-easy-ways-i23</guid>
      <description>&lt;p&gt;You have some text, or a small file, and you need it in Base64. That is a common job for data URIs, email-safe text, and APIs that only accept text. This page shows the honest options, starting with tools you may already have. We made the paid and free Tidy Byte Tools options below.&lt;/p&gt;

&lt;p&gt;Base64 is encoding, not encryption. Anyone can turn it back into the original bytes. Do not use it to hide passwords or keys.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try a built-in command first
&lt;/h2&gt;

&lt;p&gt;If you only need to convert one short string, a tool already on your computer is often enough.&lt;/p&gt;

&lt;h3&gt;
  
  
  macOS and Linux
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s1"&gt;'hello world'&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; base64
&lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s1"&gt;'aGVsbG8gd29ybGQ='&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; base64 --decode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On macOS the second command may need &lt;code&gt;base64 -D&lt;/code&gt; instead of &lt;code&gt;base64 --decode&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Python 3 (Windows, macOS, or Linux)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;python3&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="s2"&gt;"import base64; print(base64.b64encode(b'hello world').decode())"&lt;/span&gt;
&lt;span class="n"&gt;python3&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="s2"&gt;"import base64; print(base64.b64decode('aGVsbG8gd29ybGQ=').decode())"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Windows PowerShell
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nc"&gt;Convert&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nc"&gt;ToBase64String&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nc"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Encoding&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;UTF8&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GetBytes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'hello world'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nc"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Encoding&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;UTF8&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GetString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nc"&gt;Convert&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nc"&gt;FromBase64String&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'aGVsbG8gd29ybGQ='&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If that already gives you the result, you are done.&lt;/p&gt;

&lt;p&gt;Do not paste passwords, API keys, or private files into a random website. Many "online Base64" pages send what you paste to a server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Free local tool: &lt;a href="https://tidybytetools.github.io/tools/base64-lite/" rel="noopener noreferrer"&gt;base64-lite&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;base64-lite is a free tool you run on your own computer. It has a command-line tool and an MCP server for AI apps. &lt;a href="https://tidybytetools.github.io/tools/base64-lite/" rel="noopener noreferrer"&gt;We made it&lt;/a&gt;. There is no API key and no account.&lt;/p&gt;

&lt;h3&gt;
  
  
  What it does
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Encodes or decodes Base64 for text and local files.&lt;/li&gt;
&lt;li&gt;Supports the URL-safe alphabet (- and _) and data-URI output.&lt;/li&gt;
&lt;li&gt;Can auto-detect encode vs decode, or you can set the direction yourself.&lt;/li&gt;
&lt;li&gt;Runs offline, so the file stays on your machine.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What it does not do
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;It does not fetch file links from the internet.&lt;/li&gt;
&lt;li&gt;The MCP file tool has a 5 MB cap. The command line can read a larger local file.&lt;/li&gt;
&lt;li&gt;Auto-detect can guess wrong on short or unusual strings. Set encode or decode when you already know the direction.&lt;/li&gt;
&lt;li&gt;It does not inspect decoded bytes for viruses or hidden data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Install and run
&lt;/h3&gt;

&lt;p&gt;You need Python 3. The package is not on PyPI yet, so install it from the &lt;a href="https://github.com/tidybytetools/base64-lite" rel="noopener noreferrer"&gt;base64-lite GitHub repository&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip install git+https://github.com/tidybytetools/base64-lite
&lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s1"&gt;'hello world'&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; base64-lite --action encode
base64-lite photo.png --action encode --data-uri
&lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s1"&gt;'aGVsbG8gd29ybGQ='&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; base64-lite --action decode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To use it from Claude Desktop or Cursor, see the repository README. The product page is on our site.&lt;/p&gt;

&lt;h2&gt;
  
  
  Free HTTP API, with a daily cap
&lt;/h2&gt;

&lt;p&gt;If you want a simple HTTPS call and the text is small (up to 16 KB), you can use our free &lt;a href="https://tidybytetools.github.io/api/" rel="noopener noreferrer"&gt;Tidy Byte Tools API&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;Anonymous use is 50 calls per IP per UTC day. A free key (POST /keys) raises that to 200 calls a day. This path is for short text, not large files and not file URLs.&lt;/p&gt;

&lt;h2&gt;
  
  
  When you need many items or file links
&lt;/h2&gt;

&lt;p&gt;Use the cloud tool if you need any of these:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Many texts or files in one run (repeats in the same run are free)&lt;/li&gt;
&lt;li&gt;A public file link, not a file already on your computer&lt;/li&gt;
&lt;li&gt;A scheduled run in the cloud&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Base64 Encoder &amp;amp; Decoder runs on Apify. It costs $0.001 per unique item. Failed items are free. &lt;a href="https://apify.com/tidybytetools/base64-encode-decode" rel="noopener noreferrer"&gt;We made this Actor too&lt;/a&gt;. You can also run it from Apify MCP.&lt;/p&gt;

&lt;p&gt;If you only need one local string, the built-in commands or the free lite tool are the better fit.&lt;/p&gt;

</description>
      <category>base64</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to turn a PDF or Word file into Markdown for AI and notes</title>
      <dc:creator>Tidy Byte Tools</dc:creator>
      <pubDate>Wed, 11 Nov 2026 01:31:52 +0000</pubDate>
      <link>https://dev.to/tidybytetools/how-to-turn-a-pdf-or-word-file-into-markdown-for-ai-and-notes-5fp1</link>
      <guid>https://dev.to/tidybytetools/how-to-turn-a-pdf-or-word-file-into-markdown-for-ai-and-notes-5fp1</guid>
      <description>&lt;p&gt;You want the text out of a PDF, a Word file, or a web page — with the headings and tables still looking like headings and tables. Then you can paste it into a notes app, or cut it into chunks for AI search (RAG).&lt;/p&gt;

&lt;p&gt;Copy and paste from a PDF often breaks this. Headings vanish. Tables become a pile of words. Words split at the end of a line stay split. This page shows a better path, starting with a free local tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "clean Markdown" means here
&lt;/h2&gt;

&lt;p&gt;Good output looks like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Headings use &lt;code&gt;#&lt;/code&gt;, &lt;code&gt;##&lt;/code&gt;, &lt;code&gt;###&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Tables are real Markdown tables, not a jumble&lt;/li&gt;
&lt;li&gt;Lists stay as lists&lt;/li&gt;
&lt;li&gt;A hyphen at the end of a line is joined back to the next word&lt;/li&gt;
&lt;li&gt;For AI search, each chunk can keep its heading path and page numbers&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Free local tool: doc2md-lite
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/tidybytetools/doc2md-lite" rel="noopener noreferrer"&gt;doc2md-lite&lt;/a&gt; is a free tool you run on your own computer. It has a command-line tool and an MCP server for AI apps. There is no API key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it does&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Turns many PDFs and HTML pages into Markdown.&lt;/li&gt;
&lt;li&gt;Tries to keep headings and tables.&lt;/li&gt;
&lt;li&gt;Runs offline.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What it does not do&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Word (&lt;code&gt;.docx&lt;/code&gt;) support and scanned-page OCR are stronger in the Apify Actor below. If a page is only a picture, the lite tool may return little or no text.&lt;/li&gt;
&lt;li&gt;It will not open a file that is behind a login.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Install and run
&lt;/h3&gt;

&lt;p&gt;You need Python 3.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip install doc2md-lite
doc2md-lite path/to/file.pdf -o file.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;file.md&lt;/code&gt; in any text editor or notes app. If you want chunks for a vector database, see &lt;a href="https://github.com/tidybytetools/md-chunk-lite" rel="noopener noreferrer"&gt;md-chunk-lite&lt;/a&gt;, which splits Markdown by heading and keeps the heading path.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cloud option: the Apify Actor
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://apify.com/tidybytetools/doc-to-markdown" rel="noopener noreferrer"&gt;PDF, Word and Web Page to Markdown&lt;/a&gt; accepts links to PDF files, Word (&lt;code&gt;.docx&lt;/code&gt;) files, or web pages.&lt;/p&gt;

&lt;p&gt;It can also cut each file into RAG chunks. Each chunk keeps its heading path and page numbers. Chunks are free. You can get one dataset item per file, or one item per chunk (better for a vector database).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Price (November 2026):&lt;/strong&gt; $0.003 per file converted (a PDF's first 20 pages are included), $0.0003 for each PDF page after the first 20, and $0.005 per scanned page read with OCR. Failed links and files with no text are free. Apify also adds a small start fee per run.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Honest limits:&lt;/strong&gt; links must be public. Password-protected files and pages behind a login will not work in this Actor. OCR can misread a blurry scan. The Actor drops common web-page junk (menus, footers) unless you turn that off.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;a href="https://apify.com/tidybytetools/doc-to-markdown" rel="noopener noreferrer"&gt;Actor page&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Paste one or more file or page links (a sample PDF is already filled in).&lt;/li&gt;
&lt;li&gt;Leave "Make chunks for AI search" on if you want chunks.&lt;/li&gt;
&lt;li&gt;Click Start.&lt;/li&gt;
&lt;li&gt;Download the Markdown from the key-value store (&lt;code&gt;doc-1.md&lt;/code&gt;, &lt;code&gt;doc-2.md&lt;/code&gt;, …), or export the dataset.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A short way to choose
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Your situation&lt;/th&gt;
&lt;th&gt;What to use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A text PDF or HTML file on your computer&lt;/td&gt;
&lt;td&gt;Free &lt;a href="https://github.com/tidybytetools/doc2md-lite" rel="noopener noreferrer"&gt;doc2md-lite&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You already have Markdown and only need chunks&lt;/td&gt;
&lt;td&gt;Free &lt;a href="https://github.com/tidybytetools/md-chunk-lite" rel="noopener noreferrer"&gt;md-chunk-lite&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Public links, Word files, scanned pages, or chunks in the cloud&lt;/td&gt;
&lt;td&gt;&lt;a href="https://apify.com/tidybytetools/doc-to-markdown" rel="noopener noreferrer"&gt;Apify Actor&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Related guides
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://snowrsps.com/tidybytetools/guides/extract-pdf-tables-to-excel-or-csv/" rel="noopener noreferrer"&gt;How to extract tables from a PDF into Excel or CSV&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://snowrsps.com/tidybytetools/guides/check-a-website-for-broken-links/" rel="noopener noreferrer"&gt;How to check a website for broken links&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://snowrsps.com/tidybytetools/guides/count-llm-tokens-and-estimate-cost/" rel="noopener noreferrer"&gt;How to count LLM tokens and estimate cost&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These tools are made by &lt;a href="https://apify.com/tidybytetools" rel="noopener noreferrer"&gt;Tidy Byte Tools&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://snowrsps.com/tidybytetools/guides/turn-pdf-or-word-into-markdown-for-ai/" rel="noopener noreferrer"&gt;https://snowrsps.com/tidybytetools/guides/turn-pdf-or-word-into-markdown-for-ai/&lt;/a&gt;. Tools by &lt;a href="https://snowrsps.com/tidybytetools/" rel="noopener noreferrer"&gt;Tidy Byte Tools&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>pdf</category>
      <category>markdown</category>
      <category>python</category>
      <category>ai</category>
    </item>
    <item>
      <title>How to extract tables from a PDF into Excel or CSV</title>
      <dc:creator>Tidy Byte Tools</dc:creator>
      <pubDate>Wed, 11 Nov 2026 01:02:44 +0000</pubDate>
      <link>https://dev.to/tidybytetools/how-to-extract-tables-from-a-pdf-into-excel-or-csv-5ab9</link>
      <guid>https://dev.to/tidybytetools/how-to-extract-tables-from-a-pdf-into-excel-or-csv-5ab9</guid>
      <description>&lt;p&gt;You have a PDF with a table — a bank statement, a price list, a report — and you want the rows in a spreadsheet. This page shows the honest options, starting with free ones. It also says what each option cannot do.&lt;/p&gt;

&lt;h2&gt;
  
  
  First, look at the PDF
&lt;/h2&gt;

&lt;p&gt;Not every PDF is the same.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Text PDF:&lt;/strong&gt; you can highlight words with your mouse. These are the easy ones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scanned PDF:&lt;/strong&gt; each page is a picture. You cannot highlight the text. These need OCR (software that reads the picture).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mixed PDF:&lt;/strong&gt; some pages are text, some are pictures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tables that run onto the next page:&lt;/strong&gt; the header often repeats. You may want those pages joined into one table.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the file has a password, or sits behind a login, a cloud tool that only accepts a public link will not open it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try the built-in tools first
&lt;/h2&gt;

&lt;p&gt;If you already have Excel or Google Drive, try these before you install anything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Excel (Microsoft 365):&lt;/strong&gt; Data → Get Data → From File → From PDF. Pick the tables, then load them. This works well on many text PDFs. It is weaker on scans and on tables that continue across pages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Google Drive:&lt;/strong&gt; upload the PDF, open it with Google Docs, then copy the table into Sheets. Layout can break.&lt;/p&gt;

&lt;p&gt;If that already gives you clean rows, you are done.&lt;/p&gt;

&lt;h2&gt;
  
  
  Free local tool: PDF to CSV (text PDFs)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/tidybytetools/pdf-table-pull-lite" rel="noopener noreferrer"&gt;pdf-table-pull-lite&lt;/a&gt; is a free tool you run on your own computer. It has a command-line tool and an MCP server for AI apps. There is no API key and no account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it does&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reads tables from text PDFs.&lt;/li&gt;
&lt;li&gt;Writes &lt;strong&gt;CSV&lt;/strong&gt; (a spreadsheet file you can open in Excel or Google Sheets).&lt;/li&gt;
&lt;li&gt;Runs offline, so the PDF stays on your machine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What it does not do&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It does &lt;strong&gt;not&lt;/strong&gt; write Excel (&lt;code&gt;.xlsx&lt;/code&gt;) files. The output is CSV only.&lt;/li&gt;
&lt;li&gt;It does &lt;strong&gt;not&lt;/strong&gt; read scanned, image-only pages. There is no OCR in the lite tool.&lt;/li&gt;
&lt;li&gt;Cross-page joining is limited compared with the paid tools below.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is on purpose. The lite tool is the small, free version.&lt;/p&gt;

&lt;h3&gt;
  
  
  Install and run
&lt;/h3&gt;

&lt;p&gt;You need Python 3.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip install pdf-table-pull-lite
pdf-table-pull-lite path/to/file.pdf -o tables.csv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;tables.csv&lt;/code&gt; in Excel or Google Sheets. If a column looks wrong, try another table mode (bordered tables vs tables lined up by spacing). The README in the repo lists the flags.&lt;/p&gt;

&lt;p&gt;If the cells come out empty or as a jumble, your PDF may be a scan. The lite tool will not fix that. Use one of the OCR options below.&lt;/p&gt;

&lt;h2&gt;
  
  
  When you need Excel, page joins, or OCR
&lt;/h2&gt;

&lt;p&gt;Use a fuller tool if you need any of these:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An Excel file with one sheet per table&lt;/li&gt;
&lt;li&gt;Tables that continue across pages joined into one table (repeated headers dropped)&lt;/li&gt;
&lt;li&gt;Scanned or mixed PDFs read with OCR&lt;/li&gt;
&lt;li&gt;A public link you want to run in the cloud, on a schedule&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Option A: Apify Actor (cloud)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://apify.com/tidybytetools/pdf-table-pull" rel="noopener noreferrer"&gt;PDF Table Extractor&lt;/a&gt; runs on Apify. You give it links to PDF files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Price (November 2026):&lt;/strong&gt; $0.003 per text page that has a table, or $0.01 per scanned page read with OCR. Pages with no tables are free. Failed links are free. Apify also adds a small start fee for the run (this is higher if the run uses more memory).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Honest limits:&lt;/strong&gt; the PDF link must be public and must download the file itself. Password-protected PDFs and files behind a login will not work in this Actor. OCR can misread a blurry scan, so check the numbers on those pages.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;a href="https://apify.com/tidybytetools/pdf-table-pull" rel="noopener noreferrer"&gt;Actor page&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Leave the sample PDF or paste your own PDF links.&lt;/li&gt;
&lt;li&gt;Click Start.&lt;/li&gt;
&lt;li&gt;In the run results, export the dataset as CSV or Excel, or download the Excel file from the key-value store (one file per PDF, one sheet per table).&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Option B: paid tool on your own computer
&lt;/h3&gt;

&lt;p&gt;If the files are private and you do not want them in the cloud, the same extractor is sold as a one-time download on &lt;a href="https://tidybyte.gumroad.com/l/hkxqxh" rel="noopener noreferrer"&gt;Gumroad&lt;/a&gt;. It can write Excel, CSV or JSON, join tables across pages, and open password-protected PDFs. It is not free.&lt;/p&gt;

&lt;h2&gt;
  
  
  A short way to choose
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Your situation&lt;/th&gt;
&lt;th&gt;What to use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Text PDF, CSV is enough, you can run Python&lt;/td&gt;
&lt;td&gt;Free &lt;a href="https://github.com/tidybytetools/pdf-table-pull-lite" rel="noopener noreferrer"&gt;pdf-table-pull-lite&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Excel already opens the tables well&lt;/td&gt;
&lt;td&gt;Excel Power Query (built in)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You need Excel, page joins, or OCR, and a public link is fine&lt;/td&gt;
&lt;td&gt;&lt;a href="https://apify.com/tidybytetools/pdf-table-pull" rel="noopener noreferrer"&gt;Apify Actor&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Private files must stay on your computer, and you need Excel or OCR&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://tidybyte.gumroad.com/l/hkxqxh" rel="noopener noreferrer"&gt;Paid offline tool&lt;/a&gt; or another offline OCR tool you already trust&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Related guides
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tidybytetools.github.io/guides/turn-pdf-or-word-into-markdown-for-ai/" rel="noopener noreferrer"&gt;How to turn a PDF or Word file into Markdown for AI and notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tidybytetools.github.io/guides/check-a-website-for-broken-links/" rel="noopener noreferrer"&gt;How to check a website for broken links&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tidybytetools.github.io/guides/flatten-nested-json-into-csv/" rel="noopener noreferrer"&gt;How to flatten nested JSON into CSV&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These tools are made by &lt;a href="https://apify.com/tidybytetools" rel="noopener noreferrer"&gt;Tidy Byte Tools&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://tidybytetools.github.io/guides/extract-pdf-tables-to-excel-or-csv/" rel="noopener noreferrer"&gt;https://tidybytetools.github.io/guides/extract-pdf-tables-to-excel-or-csv/&lt;/a&gt;. Tools by &lt;a href="https://tidybytetools.github.io" rel="noopener noreferrer"&gt;Tidy Byte Tools&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>pdf</category>
      <category>excel</category>
      <category>csv</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
