<?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: Magill Anway</title>
    <description>The latest articles on DEV Community by Magill Anway (@magill_anway_bc9442bb1125).</description>
    <link>https://dev.to/magill_anway_bc9442bb1125</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%2F4109731%2Ff30ddd7d-d3a3-4a26-85fd-23800f5d571e.png</url>
      <title>DEV Community: Magill Anway</title>
      <link>https://dev.to/magill_anway_bc9442bb1125</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/magill_anway_bc9442bb1125"/>
    <language>en</language>
    <item>
      <title>Resize Images Before You Upload: A Local Checklist for Faster Pages and Fewer Leaks</title>
      <dc:creator>Magill Anway</dc:creator>
      <pubDate>Fri, 18 Sep 2026 02:03:30 +0000</pubDate>
      <link>https://dev.to/magill_anway_bc9442bb1125/resize-images-before-you-upload-a-local-checklist-for-faster-pages-and-fewer-leaks-md6</link>
      <guid>https://dev.to/magill_anway_bc9442bb1125/resize-images-before-you-upload-a-local-checklist-for-faster-pages-and-fewer-leaks-md6</guid>
      <description>&lt;p&gt;&lt;strong&gt;Answer first:&lt;/strong&gt; If you are about to drop a phone photo or a 4K screenshot into WordPress, Drive, or a ticket system, &lt;strong&gt;resize (and lightly compress) in your browser on your machine first&lt;/strong&gt;. Cloud optimizers are convenient — and they are also a third party that briefly holds the exact pixels you care about. Below is a practical checklist plus a local workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this keeps showing up
&lt;/h2&gt;

&lt;p&gt;Indie builders keep shipping the same pattern: Canvas / WASM tools that refuse to upload. Roundups of “compress before upload” and WordPress Media Library horror stories circulate every few months. The useful takeaway is not another brand name — it is a habit: &lt;strong&gt;treat the image as sensitive until it is the right size&lt;/strong&gt;, then send it once, to the destination you chose.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pre-upload checklist (2 minutes)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Know the destination size.&lt;/strong&gt; Featured image, OG card, avatar, product tile — pick a max width before you open any tool.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefer local resize over “upload then hope the plugin fixes it.”&lt;/strong&gt; Fewer hops means fewer copies and fewer upload-limit failures.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Watch the Network tab.&lt;/strong&gt; Open DevTools → Network, clear the log, process a &lt;em&gt;non-sensitive&lt;/em&gt; test image. Pass = no multipart POST carrying your photo to a third-party API.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Airplane-mode sanity check.&lt;/strong&gt; After page assets load, go offline and retry. If resize still works, upload-to-server architecture is off the table for that action.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Name the output clearly.&lt;/strong&gt; &lt;code&gt;hero-1200w-2026-09-18.jpg&lt;/code&gt; beats &lt;code&gt;IMG_4832.jpg&lt;/code&gt; when you attach it later.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A local resize workflow
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1  Cap the long edge
&lt;/h3&gt;

&lt;p&gt;Most blog heroes do not need 4000px. Cap to 1200–1600px on the long edge unless print quality matters.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 — Resize in the tab
&lt;/h3&gt;

&lt;p&gt;Change dimensions locally. Closing the tab should clear in-memory copies; the downloaded file is the artifact you keep.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3 — Optional light compress
&lt;/h3&gt;

&lt;p&gt;If the file is still huge, compress lightly after resize — still local — then upload once to Media Library / Drive / the real destination.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4  Send once
&lt;/h3&gt;

&lt;p&gt;Skip the detour through a random “free online compressor” host for photos you would not email to a stranger.&lt;/p&gt;

&lt;h2&gt;
  
  
  One browser-local starting point
&lt;/h2&gt;

&lt;p&gt;When you need an on-device resizer without creating an account, this Image Resizer runs in the tab (files stay on your device):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.lizecheng.net/image/image-resizer/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260918&amp;amp;utm_content=image-resizer" rel="noopener noreferrer"&gt;https://www.lizecheng.net/image/image-resizer/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260918&amp;amp;utm_content=image-resizer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(That is the only product link in this post.)&lt;/p&gt;

&lt;h2&gt;
  
  
  What “good enough” looks like
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Local move&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Phone photo → blog hero&lt;/td&gt;
&lt;td&gt;Resize to ~1200w → upload once&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4K screenshot → ticket&lt;/td&gt;
&lt;td&gt;Cap long edge → optional compress → attach&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hit &lt;code&gt;upload_max_filesize&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Resize first; do not fight PHP limits with a cloud hop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sensitive ID / face photos&lt;/td&gt;
&lt;td&gt;Never use a cloud compressor “just this once&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;Image resize is a solved UX problem. The open question is whether the bytes leave your device on the way. Prefer tools you can verify with Network + offline checks — and keep cloud converters for files you would not mind a stranger viewing.&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>images</category>
    </item>
    <item>
      <title>Merge PDFs Locally Before You Share: A Privacy Checklist for Contracts and Scans</title>
      <dc:creator>Magill Anway</dc:creator>
      <pubDate>Thu, 17 Sep 2026 02:05:22 +0000</pubDate>
      <link>https://dev.to/magill_anway_bc9442bb1125/merge-pdfs-locally-before-you-share-a-privacy-checklist-for-contracts-and-scans-4m7o</link>
      <guid>https://dev.to/magill_anway_bc9442bb1125/merge-pdfs-locally-before-you-share-a-privacy-checklist-for-contracts-and-scans-4m7o</guid>
      <description>&lt;p&gt;&lt;strong&gt;Answer first:&lt;/strong&gt; If you are combining a signed agreement, ID scans, or medical pages into one PDF, do the merge &lt;strong&gt;in your browser on your machine&lt;/strong&gt; before the file ever touches email, Drive, or a random “free online merger.” Cloud converters are convenient — and they are also a third party that briefly (or longer) holds the exact bytes you care about. Below is a practical checklist plus a local workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this keeps showing up
&lt;/h2&gt;

&lt;p&gt;Indie builders keep shipping the same pattern: pdf-lib / WASM tools that refuse to upload. Roundups of “merge PDF with no signup” circulate again every few months. The useful takeaway is not another brand name — it is a habit: &lt;strong&gt;treat the packet as sensitive until it is assembled&lt;/strong&gt;, then send it once, to the destination you chose.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pre-merge checklist (2 minutes)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Know what is in the stack.&lt;/strong&gt; Cover sheets, contracts, IDs — remove pages you do not need &lt;em&gt;before&lt;/em&gt; merging when possible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefer local merge over “email me the parts.”&lt;/strong&gt; Fewer hops means fewer copies.\n3. &lt;strong&gt;Watch the Network tab.&lt;/strong&gt; Open DevTools → Network, clear the log, merge a &lt;em&gt;non-sensitive&lt;/em&gt; test PDF. Pass = no multipart POST carrying your document to a third-party API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Airplane-mode sanity check.&lt;/strong&gt; After page assets load, go offline and retry. If merge still works, upload-to-server architecture is off the table for that action.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Name the output clearly.&lt;/strong&gt; &lt;code&gt;client-packet-2026-09-17.pdf\&lt;/code&gt; beats &lt;code&gt;merged.pdf\&lt;/code&gt; when you attach it later.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A local merge workflow
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1 — Order the sources
&lt;/h3&gt;

&lt;p&gt;Drop files in the order the recipient expects (cover → agreement → appendixices). Reordering after a cloud merge often means another upload.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 — Merge in the tab
&lt;/h3&gt;

&lt;p&gt;Combine locally. Closing the tab should clear in-memory copies; the downloaded file is the artifact you keep.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3 — Send once
&lt;/h3&gt;

&lt;p&gt;Attach or upload the finished packet to the real destination only. Skip the detour through a random merger host.&lt;/p&gt;

&lt;h3&gt;
  
  
  Optional — Split first
&lt;/h3&gt;

&lt;p&gt;If you only need pages 2–5 of a larger scan, split locally first, then merge the thin slices. Same rule: Network tab quiet while you process.&lt;/p&gt;

&lt;h2&gt;
  
  
  One browser-local starting point
&lt;/h2&gt;

&lt;p&gt;When you need an on-device merge without creating an account, this Merge PDF tool runs in the tab (files stay on your device):&lt;br&gt;
&lt;a href="https://www.lizecheng.net/pdf/merge-pdf/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260917&amp;amp;utm_content=merge-pdf" rel="noopener noreferrer"&gt;https://www.lizecheng.net/pdf/merge-pdf/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260917&amp;amp;utm_content=merge-pdf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(That is the only product link in this post.)&lt;/p&gt;

&lt;h2&gt;
  
  
  What “good enough” looks like
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Local move&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2–5 scans for a form&lt;/td&gt;
&lt;td&gt;Merge in-tab → upload once&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Contract + appendixices&lt;/td&gt;
&lt;td&gt;Order carefully → merge → email&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Need only a page range&lt;/td&gt;
&lt;td&gt;Split locally → then merge thin set&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sensitive IDs&lt;/td&gt;
&lt;td&gt;Never use a cloud converter “just this once”&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;Merging PDFs is a solved UX problem. The open question is whether the bytes leave your device on the way. Prefer tools you can verify with Network + offline checks — and keep cloud converters for files you would not mind a stranger reading.&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>pdf</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Image Resize Before You Upload: A Privacy-First Checklist for Forms, Email, and Social</title>
      <dc:creator>Magill Anway</dc:creator>
      <pubDate>Wed, 16 Sep 2026 02:35:06 +0000</pubDate>
      <link>https://dev.to/magill_anway_bc9442bb1125/image-resize-before-you-upload-a-privacy-first-checklist-for-forms-email-and-social-3cck</link>
      <guid>https://dev.to/magill_anway_bc9442bb1125/image-resize-before-you-upload-a-privacy-first-checklist-for-forms-email-and-social-3cck</guid>
      <description>&lt;h1&gt;
  
  
  Image Resize Before You Upload: A Privacy-First Checklist for Forms, Email, and Social
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer first:&lt;/strong&gt; Most “upload your photo” flows (job portals, insurance claims, school forms, Discord/Slack avatars) quietly accept multi‑megabyte originals. That wastes bandwidth, triggers server-side recompression you do not control, and — if you used a random online compressor first — may mean a third party already saw the picture. Resize and compress &lt;strong&gt;in the browser on your machine&lt;/strong&gt; before the upload step. Below is a practical checklist plus a local workflow that never needs a cloud converter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this is hot right now
&lt;/h2&gt;

&lt;p&gt;Indie and open-source circles keep shipping the same pattern for PDFs &lt;em&gt;and&lt;/em&gt; images: Canvas / WASM tools that refuse to upload. Roundups of “unlimited free compressors with no signup” are circulating again, and the useful takeaway is not another SaaS name  it is a habit: &lt;strong&gt;treat the file as sensitive until it is sized for the destination&lt;/strong&gt;, then upload once, to the destination you chose.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pre-upload checklist (2 minutes)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Know the destination limit.&lt;/strong&gt; Avatar 500×500? Application form “max 2 MB? Email attachment 10 MB? Write the number down.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefer resize, then compress.&lt;/strong&gt; Shrinking dimensions usually beats quality-only compression for phone photos.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Strip EXIF when it matters.&lt;/strong&gt; Location and device metadata hitchhike on JPGs; many local tools let you re-encode without it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Audit the helper tool.&lt;/strong&gt; Open DevTools → Network, clear the log, process a &lt;em&gt;non-sensitive&lt;/em&gt; test image. Pass = no multipart POST carrying your pixels to a third-party API.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Airplane-mode sanity check.&lt;/strong&gt; After the page assets load, go offline and retry. If resize still works, upload-to-server architecture is off the table for that action.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A local resize → compress workflow
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1 — Hit the pixel budget
&lt;/h3&gt;

&lt;p&gt;If a portal wants 1200px on the long edge, do that first. Exact-dimension resize avoids “still too big” loops after quality tweaks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 — Hit the byte budget
&lt;/h3&gt;

&lt;p&gt;Only after dimensions are right, dial quality (or target KB) until the file is under the form limit. WebP when the destination accepts it; JPG when it does not.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3 — Upload once, to the real destination
&lt;/h3&gt;

&lt;p&gt;Skip the detour through a random “free compressor” host. Your browser can do the heavy lifting; the only server that should receive the final bytes is the form you are submitting.&lt;/p&gt;

&lt;h3&gt;
  
  
  Optional — PDF packets of scans
&lt;/h3&gt;

&lt;p&gt;If the next step is “merge three resized scans into one PDF,” keep that merge local too. Same rule: Network tab quiet while the file is processed.&lt;/p&gt;

&lt;h2&gt;
  
  
  One browser-local starting point
&lt;/h2&gt;

&lt;p&gt;When you need an on-device resize without creating an account, this Image Resizer runs in the tab (files stay on your device):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.lizecheng.net/image/image-resizer/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260916&amp;amp;utm_content=image-resizer" rel="noopener noreferrer"&gt;https://www.lizecheng.net/image/image-resizer/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260916&amp;amp;utm_content=image-resizer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(That is the only product link in this post.)&lt;/p&gt;

&lt;h2&gt;
  
  
  What “good enough” looks like
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Destination&lt;/th&gt;
&lt;th&gt;Typical target&lt;/th&gt;
&lt;th&gt;Local move&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Avatar / profile&lt;/td&gt;
&lt;td&gt;≤ 512–1024 px&lt;/td&gt;
&lt;td&gt;Exact resize + mild compress&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Job / visa forms&lt;/td&gt;
&lt;td&gt;Often ≤ 1–2 MB&lt;/td&gt;
&lt;td&gt;Resize long edge → compress to KB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Email&lt;/td&gt;
&lt;td&gt;≤ 5–10 MB total&lt;/td&gt;
&lt;td&gt;Batch resize before attach&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Social feed&lt;/td&gt;
&lt;td&gt;Platform-dependent&lt;/td&gt;
&lt;td&gt;Prefer WebP/JPG under 1 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;Cloud converters are convenient until the photo is a passport scan, a child’s face, or a whiteboard with customer data. Build the habit: &lt;strong&gt;resize locally, verify the Network tab, upload once.&lt;/strong&gt; The tooling is already in your browser — you do not need another account to use it.&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>image</category>
    </item>
    <item>
      <title>Stop Uploading Sensitive PDFs: A 5-Minute Network-Tab Audit + Local Browser Workflow</title>
      <dc:creator>Magill Anway</dc:creator>
      <pubDate>Tue, 15 Sep 2026 06:48:26 +0000</pubDate>
      <link>https://dev.to/magill_anway_bc9442bb1125/stop-uploading-sensitive-pdfs-a-5-minute-network-tab-audit-local-browser-workflow-mei</link>
      <guid>https://dev.to/magill_anway_bc9442bb1125/stop-uploading-sensitive-pdfs-a-5-minute-network-tab-audit-local-browser-workflow-mei</guid>
      <description>&lt;p&gt;&lt;strong&gt;Answer first:&lt;/strong&gt; Before you drop a contract, payslip, or ID scan into any "free online PDF tool," open DevTools → &lt;strong&gt;Network&lt;/strong&gt;, clear the log, then run the tool. If you see a multipart upload or a request to &lt;code&gt;api.*.com&lt;/code&gt; carrying your file bytes, that document already left your machine — privacy policy wording does not undo that. Prefer tools that process files &lt;strong&gt;in the tab&lt;/strong&gt; (Canvas / pdf-lib / WASM). Below is a repeatable audit plus a private compress → merge workflow you can finish in under five minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this is hot right now
&lt;/h2&gt;

&lt;p&gt;Over the past week, DEV and GitHub have been full of the same pattern: privacy-first PDF/image suites that refuse to upload (browser-only WASM/JS tools, CSP &lt;code&gt;connect-src 'self'&lt;/code&gt; experiments, “verify with Network tab” posts). The shared pitch is simple — cloud converters are convenient until the file is regulated or embarrassing. The useful takeaway for working developers is not “another SaaS exists,” but &lt;strong&gt;a habit&lt;/strong&gt;: treat every online converter as untrusted until the Network panel says otherwise.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 5-minute Network-tab audit
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open Chrome/Firefox/Edge DevTools (&lt;code&gt;F12&lt;/code&gt; or &lt;code&gt;Cmd+Opt+I&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Go to the &lt;strong&gt;Network&lt;/strong&gt; tab. Check &lt;strong&gt;Preserve log&lt;/strong&gt;. Click the clear (🚫) button.&lt;/li&gt;
&lt;li&gt;Optionally filter by &lt;strong&gt;Fetch/XHR&lt;/strong&gt; (or disable cache and leave “All” on).&lt;/li&gt;
&lt;li&gt;Pick a &lt;strong&gt;non-sensitive&lt;/strong&gt; test PDF or JPG (a blank page is fine).&lt;/li&gt;
&lt;li&gt;Run the online tool’s compress / merge / convert action.&lt;/li&gt;
&lt;li&gt;Watch for:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;POST&lt;/code&gt; / &lt;code&gt;PUT&lt;/code&gt; with a large payload right after file pick&lt;/li&gt;
&lt;li&gt;Hosts like &lt;code&gt;api*&lt;/code&gt;, &lt;code&gt;upload*&lt;/code&gt;, CDN buckets, analytics SDKs firing on drop&lt;/li&gt;
&lt;li&gt;A progress bar that only moves while a request is in flight&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Pass criteria:&lt;/strong&gt; while the file is being processed, you should see &lt;strong&gt;no request that carries the document body&lt;/strong&gt;. Asset loads for the app itself (JS, WASM, workers) are normal. File bytes going to a third-party origin are not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Extra check:&lt;/strong&gt; after the page has loaded once, flip to airplane mode and try again. If the tool still works offline, upload-to-server architecture is off the table for that action.&lt;/p&gt;

&lt;h2&gt;
  
  
  A private compress → merge workflow (local browser)
&lt;/h2&gt;

&lt;p&gt;Here is a practical path when you need to ship a smaller, single PDF of scans or screenshots without handing them to a random host.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1 — Shrink heavy photos first
&lt;/h3&gt;

&lt;p&gt;Phone photos and scans are often 3–8 MB each. Compress them locally before they become PDF pages.&lt;/p&gt;

&lt;p&gt;Use a browser-local image compressor (e.g. Lizely Image Compressor) in your browser:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Drop JPG/PNG/WebP files onto the page.&lt;/li&gt;
&lt;li&gt;Drag the quality slider (start around &lt;strong&gt;60–80%&lt;/strong&gt; for photos).&lt;/li&gt;
&lt;li&gt;Use the split preview to confirm text and edges still look sharp.&lt;/li&gt;
&lt;li&gt;Download the compressed copies.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Tip: WebP often wins 20–30% over JPEG at similar visual quality when the destination is the web. Stick with JPEG when the next system only accepts &lt;code&gt;.jpg&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 — Combine documents without an upload
&lt;/h3&gt;

&lt;p&gt;When you have several PDFs (or several exports) that should be one attachment:&lt;/p&gt;

&lt;p&gt;Open &lt;a href="https://www.lizecheng.net/pdf/merge-pdf/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260915&amp;amp;utm_content=stop-uploading-pdfs-network-tab" rel="noopener noreferrer"&gt;Merge PDF&lt;/a&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Browse or drag &lt;strong&gt;two or more&lt;/strong&gt; PDFs.&lt;/li&gt;
&lt;li&gt;Reorder with the up/down controls so the page sequence matches what the recipient expects.&lt;/li&gt;
&lt;li&gt;Download the merged file.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Merging happens with client-side page copy (lossless concatenation of page objects) — text stays selectable and vectors stay crisp. Password-protected inputs need unlocking first; the tool will skip locked files rather than guess.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3 — Optional: shrink an image-heavy PDF
&lt;/h3&gt;

&lt;p&gt;If the result is still too large for email or a portal cap, try a bounded local pass with a browser-local PDF compressor. It re-encodes eligible embedded JPGs in-browser (with honest limits). Keep the original and spot-check pages before you send anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  What “local” actually buys you
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Concern&lt;/th&gt;
&lt;th&gt;Cloud converter&lt;/th&gt;
&lt;th&gt;In-browser tool&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;File leaves device&lt;/td&gt;
&lt;td&gt;Yes (by design)&lt;/td&gt;
&lt;td&gt;No (bytes stay in tab memory)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Queue / file-size gate&lt;/td&gt;
&lt;td&gt;Common&lt;/td&gt;
&lt;td&gt;Bound by your RAM, not a free tier&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Offline after first load&lt;/td&gt;
&lt;td&gt;Rare&lt;/td&gt;
&lt;td&gt;Often yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auditability&lt;/td&gt;
&lt;td&gt;Privacy policy prose&lt;/td&gt;
&lt;td&gt;Network tab + airplane mode&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;None of this replaces good judgment (malware-laden PDFs are still PDFs). It does remove an unnecessary third party from everyday compress/merge chores.&lt;/p&gt;

&lt;h2&gt;
  
  
  Soft wrap-up
&lt;/h2&gt;

&lt;p&gt;Make the Network-tab check a reflex. Once you trust a tool’s architecture, a local compress → merge loop covers most “please send one smaller PDF” requests without uploading sensitive material.&lt;/p&gt;

&lt;p&gt;Lizely’s browser tools (image compress, merge PDF, and friends) run on-device with no signup — useful when you want the workflow above without installing desktop software.&lt;/p&gt;




</description>
      <category>privacy</category>
      <category>pdf</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Simple JSON Debugging Habits That Save Time</title>
      <dc:creator>Magill Anway</dc:creator>
      <pubDate>Mon, 07 Sep 2026 02:47:22 +0000</pubDate>
      <link>https://dev.to/magill_anway_bc9442bb1125/simple-json-debugging-habits-that-save-time-25ae</link>
      <guid>https://dev.to/magill_anway_bc9442bb1125/simple-json-debugging-habits-that-save-time-25ae</guid>
      <description>&lt;p&gt;When a JSON error appears deep inside an API client, the fastest fix is usually a consistent inspection routine rather than a larger parser.&lt;/p&gt;

&lt;p&gt;First, save the raw response exactly as received. Then format it so nesting and delimiters are visible. Check the first character to confirm whether you received an object, an array, a string, or an HTML error page disguised as a 200 response.&lt;/p&gt;

&lt;p&gt;Next, validate the contract: required keys, value types, and whether null is allowed. Search for duplicate keys and unexpected arrays, especially when the payload was assembled from several services. If the response can contain user text, remember that escaped quotes and newline characters are valid JSON even when they look unusual.&lt;/p&gt;

&lt;p&gt;For debugging logs, keep a readable copy and redact tokens, cookies, and personal data before sharing. Minify only when sending a final payload where bandwidth matters. A short checklist like this turns most “unexpected token” messages into a precise location and an actionable fix.&lt;/p&gt;

&lt;p&gt;A browser-based formatter can help inspect a sample quickly:&lt;br&gt;
&lt;a href="https://www.lizecheng.net/dev/json-formatter/?utm_source=dev.to&amp;amp;utm_medium=forum&amp;amp;utm_campaign=lizely_daily_20260907&amp;amp;utm_content=json-formatter"&gt;https://www.lizecheng.net/dev/json-formatter/?utm_source=dev.to&amp;amp;utm_medium=forum&amp;amp;utm_campaign=lizely_daily_20260907&amp;amp;utm_content=json-formatter&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
