<?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: nikoo li</title>
    <description>The latest articles on DEV Community by nikoo li (@nikoo_li_06a1e02c73785324).</description>
    <link>https://dev.to/nikoo_li_06a1e02c73785324</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%2F4011917%2F0d49d2c8-60d1-4c96-a4c5-3949e7dd0585.png</url>
      <title>DEV Community: nikoo li</title>
      <link>https://dev.to/nikoo_li_06a1e02c73785324</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nikoo_li_06a1e02c73785324"/>
    <language>en</language>
    <item>
      <title>Building a PDF compressor in 2 weeks — no backend, no uploads, just browser magic</title>
      <dc:creator>nikoo li</dc:creator>
      <pubDate>Sat, 25 Jul 2026 06:21:07 +0000</pubDate>
      <link>https://dev.to/nikoo_li_06a1e02c73785324/building-a-pdf-compressor-in-2-weeks-no-backend-no-uploads-just-browser-magic-37hk</link>
      <guid>https://dev.to/nikoo_li_06a1e02c73785324/building-a-pdf-compressor-in-2-weeks-no-backend-no-uploads-just-browser-magic-37hk</guid>
      <description></description>
      <category>webdev</category>
      <category>javascript</category>
      <category>react</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Stop Bloating Your GitHub Releases: Compress Project Docs to Exact Sizes</title>
      <dc:creator>nikoo li</dc:creator>
      <pubDate>Wed, 22 Jul 2026 02:47:00 +0000</pubDate>
      <link>https://dev.to/nikoo_li_06a1e02c73785324/stop-bloating-your-github-releases-compress-project-docs-to-exact-sizes-46ac</link>
      <guid>https://dev.to/nikoo_li_06a1e02c73785324/stop-bloating-your-github-releases-compress-project-docs-to-exact-sizes-46ac</guid>
      <description>&lt;p&gt;If you maintain an open-source project, you've probably hit this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You generate a 40-page contributor guide with diagrams → 18MB&lt;/li&gt;
&lt;li&gt;GitHub Releases has no hard limit, but clone times get slower for everyone&lt;/li&gt;
&lt;li&gt;Some mirror sites do have limits&lt;/li&gt;
&lt;li&gt;Your &lt;code&gt;git clone&lt;/code&gt; gets slower over time as PDFs bloat the repo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I built TinyPDF for designers first, but I've been using it for my own project docs too: type the target size in MB, and it compresses to that size while preserving layout and readability as much as possible.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tinypdf.cn/?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=opensource_docs&amp;amp;utm_content=devto_opensource_2026-07-22" rel="noopener noreferrer"&gt;https://tinypdf.cn/?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=opensource_docs&amp;amp;utm_content=devto_opensource_2026-07-22&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No account, no watermarks, 100% free, works entirely in your browser (no server uploads).&lt;/p&gt;

&lt;p&gt;Bonus: if you're using GitHub Actions, you could wire this into your release pipeline (the compression runs locally in-browser right now, but I'm thinking about a CLI version).&lt;/p&gt;

&lt;p&gt;What's the biggest PDF you've committed to a repo? Let's compare in the comments.&lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
    <item>
      <title>Stop wasting time on PDF compression — one-click to your target size</title>
      <dc:creator>nikoo li</dc:creator>
      <pubDate>Mon, 20 Jul 2026 15:47:33 +0000</pubDate>
      <link>https://dev.to/nikoo_li_06a1e02c73785324/stop-wasting-time-on-pdf-compression-one-click-to-your-target-size-45c6</link>
      <guid>https://dev.to/nikoo_li_06a1e02c73785324/stop-wasting-time-on-pdf-compression-one-click-to-your-target-size-45c6</guid>
      <description>&lt;h1&gt;
  
  
  Stop wasting time on PDF compression — one-click to your target size
&lt;/h1&gt;

&lt;p&gt;Let's be honest: PDF compression shouldn't be a 15-minute task.&lt;/p&gt;

&lt;p&gt;You export your document, drag it into a compressor, pick a "high/medium/low" preset, download, check the size… and it's still over the limit. Repeat. Adjust settings. Repeat again.&lt;/p&gt;

&lt;p&gt;I built &lt;a href="https://tinypdf.cn/?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=efficiency_launch&amp;amp;utm_content=devto_oneclick_efficiency_2026-07-20" rel="noopener noreferrer"&gt;TinyPDF&lt;/a&gt; because this workflow was killing my productivity as a designer.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works (in 3 clicks)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Drop your PDF&lt;/li&gt;
&lt;li&gt;Type your target size in MB (2MB, 5MB, 10MB — whatever you need)&lt;/li&gt;
&lt;li&gt;Hit "Compress"&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. No guessing presets, no back-and-forth.&lt;/p&gt;

&lt;p&gt;The tool automatically figures out how much to reduce image quality while preserving page count, page size, and layout. It keeps quality as high as possible while hitting your exact target.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this saves time
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No trial and error:&lt;/strong&gt; Set the size once, get it right first time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No account needed:&lt;/strong&gt; Just open the page and compress&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No ads, no watermarks:&lt;/strong&gt; Clean, fast, distraction-free&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Files stay local:&lt;/strong&gt; Processing happens in your browser — no uploads to a server&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Current limits (keeping it focused)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Desktop web only (mobile coming later)&lt;/li&gt;
&lt;li&gt;One file at a time, up to 100MB&lt;/li&gt;
&lt;li&gt;No batch mode yet&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you've ever found yourself wasting time on PDF compression, give it a try: &lt;a href="https://tinypdf.cn/?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=efficiency_launch&amp;amp;utm_content=devto_oneclick_efficiency_2026-07-20" rel="noopener noreferrer"&gt;TinyPDF&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Would love to hear what workflows you'd automate next!&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>showdev</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The overlooked PDF problem in upload forms: fixed file-size limits</title>
      <dc:creator>nikoo li</dc:creator>
      <pubDate>Mon, 06 Jul 2026 02:16:20 +0000</pubDate>
      <link>https://dev.to/nikoo_li_06a1e02c73785324/the-overlooked-pdf-problem-in-upload-forms-fixed-file-size-limits-5b65</link>
      <guid>https://dev.to/nikoo_li_06a1e02c73785324/the-overlooked-pdf-problem-in-upload-forms-fixed-file-size-limits-5b65</guid>
      <description>&lt;p&gt;A small product detail I keep running into: upload forms often fail PDFs for a very boring reason.&lt;/p&gt;

&lt;p&gt;The file is not broken. The layout is fine. The user just needs the PDF to be under a fixed limit like 10 MB, 20 MB, or 25 MB.&lt;/p&gt;

&lt;p&gt;This happens a lot with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;portfolio submissions&lt;/li&gt;
&lt;li&gt;school or job applications&lt;/li&gt;
&lt;li&gt;client handoff portals&lt;/li&gt;
&lt;li&gt;internal forms&lt;/li&gt;
&lt;li&gt;support ticket attachments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The usual advice is “compress the PDF,” but that is a bit vague. In practice, the user does not always want maximum compression. They want a specific outcome:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Make this PDF fit under the upload limit, then let me check whether it still looks acceptable.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the workflow I built TinyPDF around:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tinypdf.cn/?utm_source=devto&amp;amp;utm_medium=developer_promo&amp;amp;utm_campaign=portfolio_upload_limits&amp;amp;utm_content=devto_upload_limit_workflow_20260706" rel="noopener noreferrer"&gt;https://tinypdf.cn/?utm_source=devto&amp;amp;utm_medium=developer_promo&amp;amp;utm_campaign=portfolio_upload_limits&amp;amp;utm_content=devto_upload_limit_workflow_20260706&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is intentionally narrow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Upload one PDF.&lt;/li&gt;
&lt;li&gt;Enter the target size in MB.&lt;/li&gt;
&lt;li&gt;Download the compressed result.&lt;/li&gt;
&lt;li&gt;Open the result and inspect it before submitting.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The interesting product lesson for me is that “PDF compression” is too broad a category. The sharper use case is the moment when an upload form rejects a file and the user has one concrete number to hit.&lt;/p&gt;

&lt;p&gt;If you build upload flows, what file-size limits do you usually set for PDFs? And do you explain the limit before or after the upload fails?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>showdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Compressing PDFs to a target file size instead of guessing quality presets</title>
      <dc:creator>nikoo li</dc:creator>
      <pubDate>Thu, 02 Jul 2026 11:19:40 +0000</pubDate>
      <link>https://dev.to/nikoo_li_06a1e02c73785324/compressing-pdfs-to-a-target-file-size-instead-of-guessing-quality-presets-1hoc</link>
      <guid>https://dev.to/nikoo_li_06a1e02c73785324/compressing-pdfs-to-a-target-file-size-instead-of-guessing-quality-presets-1hoc</guid>
      <description>&lt;p&gt;When a PDF is too large, the real requirement is often not “make it smaller.”&lt;/p&gt;

&lt;p&gt;It is usually more concrete:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the job portal says the file must be under 10 MB&lt;/li&gt;
&lt;li&gt;the school form rejects anything above 5 MB&lt;/li&gt;
&lt;li&gt;the client upload system has a 20 MB limit&lt;/li&gt;
&lt;li&gt;an email attachment fails at the last step&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is why I built TinyPDF as a small target-size PDF compressor:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tinypdf.cn/" rel="noopener noreferrer"&gt;https://tinypdf.cn/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instead of choosing “low / medium / high” compression and checking the result manually, the workflow is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Upload one PDF&lt;/li&gt;
&lt;li&gt;Enter the target size in MB&lt;/li&gt;
&lt;li&gt;Let the tool try to compress under that limit&lt;/li&gt;
&lt;li&gt;Download the result&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The implementation goal is to preserve page count, page dimensions, and layout whenever possible. If the PDF is image-heavy and the target is very small, there is always a quality tradeoff, so the UI tries to keep that expectation clear.&lt;/p&gt;

&lt;p&gt;This is a narrow tool by design. It does not merge, split, edit, OCR, or sign PDFs. It only focuses on one annoying workflow: “this file needs to be under a specific size.”&lt;/p&gt;

&lt;p&gt;I am sharing it here because I would like feedback from people who deal with document uploads in real workflows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is target-size compression clearer than quality presets?&lt;/li&gt;
&lt;li&gt;What file limits do you see most often?&lt;/li&gt;
&lt;li&gt;What privacy details should be visible before upload?&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>productivity</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
