<?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>PLC inputs: match PNP sensors to sourcing cards and NPN to sinking cards</title>
      <dc:creator>Magill Anway</dc:creator>
      <pubDate>Mon, 26 Oct 2026 01:24:46 +0000</pubDate>
      <link>https://dev.to/magill_anway_bc9442bb1125/plc-inputs-match-pnp-sensors-to-sourcing-cards-and-npn-to-sinking-cards-ik</link>
      <guid>https://dev.to/magill_anway_bc9442bb1125/plc-inputs-match-pnp-sensors-to-sourcing-cards-and-npn-to-sinking-cards-ik</guid>
      <description>&lt;p&gt;A proximity sensor that "works on the bench" and then sits dark on the machine is usually a polarity mismatch, not a bad sensor. PLC digital inputs and sensor outputs have to agree on which side sources the current.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sinking and sourcing
&lt;/h2&gt;

&lt;p&gt;Current in a DC input circuit has a direction.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;sinking PLC input&lt;/strong&gt; draws current into the input terminal. It pairs with an &lt;strong&gt;NPN&lt;/strong&gt; (negative-switching) sensor. The sensor switches the load toward 0 V.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;sourcing PLC input&lt;/strong&gt; pushes current out of the input terminal. It pairs with a &lt;strong&gt;PNP&lt;/strong&gt; (positive-switching) sensor. The sensor switches the load toward +V.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The words are easy to swap because people describe either the sensor or the card. Read the card manual for sink versus source, then buy the sensor to match that card, not the other way around after the panel is built. A PNP sensor on a sinking-only input (or an NPN sensor on a sourcing-only input) does not give a reliable "1". It can look like an open wire.&lt;/p&gt;

&lt;p&gt;Outputs follow the same split. A &lt;strong&gt;relay output&lt;/strong&gt; tolerates mixed AC/DC loads and gives galvanic isolation, but it is slow and the contacts wear. A &lt;strong&gt;transistor output&lt;/strong&gt; switches faster and lasts longer, but it is polarity- and voltage-specific: sink or source, and only the rated DC voltage. Do not treat "transistor output" as interchangeable with "relay output" on a contactor coil unless the datasheet says the transistor can carry that load.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to write on the RFQ
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Name the PLC input card and whether each channel is sinking, sourcing, or selectable.&lt;/li&gt;
&lt;li&gt;Specify the sensor output as PNP or NPN to match that card, plus the supply voltage (commonly 24 V DC).&lt;/li&gt;
&lt;li&gt;If the plant already standardized on one polarity, keep it. Mixed PNP and NPN spares are the usual commissioning fault.&lt;/li&gt;
&lt;li&gt;For analog, keep this separate: 4-20 mA is a live-zero current loop (0 mA means a broken wire, not a process zero). It is not a PNP/NPN choice.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is selection research, not a product offer. SpecForge is an industrial product specification encyclopedia for procurement engineers and automation integrators. It is not a manufacturer or a distributor, and it does not sell PLCs or sensors.&lt;/p&gt;

&lt;p&gt;The I/O electricals chapter, including the sink/source pairing and the analog live-zero note, is in the SpecForge PLC selection guide:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.sourcebyspec.com/encyclopedia/plc.html" rel="noopener noreferrer"&gt;https://www.sourcebyspec.com/encyclopedia/plc.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How the same PNP/NPN output shows up on a proximity switch datasheet is in the proximity sensor guide:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.sourcebyspec.com/encyclopedia/proximity-sensor.html" rel="noopener noreferrer"&gt;https://www.sourcebyspec.com/encyclopedia/proximity-sensor.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Verify the card and the sensor against the current manufacturer PDFs before you release the panel wiring.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Pressure transmitter accuracy: %span and %URL are not the same error</title>
      <dc:creator>Magill Anway</dc:creator>
      <pubDate>Mon, 26 Oct 2026 01:18:49 +0000</pubDate>
      <link>https://dev.to/magill_anway_bc9442bb1125/pressure-transmitter-accuracy-span-and-url-are-not-the-same-error-16kn</link>
      <guid>https://dev.to/magill_anway_bc9442bb1125/pressure-transmitter-accuracy-span-and-url-are-not-the-same-error-16kn</guid>
      <description>&lt;p&gt;Two pressure-transmitter datasheets can both print "±0.1%" and still describe very different errors. The percentage is only meaningful once you know what it is a percentage of.&lt;/p&gt;

&lt;p&gt;A pressure transmitter is the field instrument that converts process pressure into a standardized output, usually 4-20 mA (sometimes with HART) or a digital fieldbus, for a PLC, DCS, or recorder. It is not a bare sensing cell. The electronics add temperature compensation, damping, engineering units, and the range you actually calibrate.&lt;/p&gt;

&lt;h2&gt;
  
  
  URL, span, and turndown
&lt;/h2&gt;

&lt;p&gt;The Upper Range Limit (URL) is the model's maximum settable range. The calibrated span is the slice of that URL you order and use. Turndown (rangedown) is URL divided by calibrated span: 10:1, 100:1, and on some models 200:1.&lt;/p&gt;

&lt;p&gt;Turning a wide-URL model down to a small span is convenient for spares, but it is not free. Datasheets state that a higher turndown raises the measured error. A model used near its URL and the same model turned down 100:1 are not the same installation.&lt;/p&gt;

&lt;h2&gt;
  
  
  What %span and %URL actually reference
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;%span&lt;/strong&gt; (also written %FS, percent of full scale) is referenced to the full scale of the selected, calibrated range.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;%URL&lt;/strong&gt; is referenced to the model's maximum settable range, not to the range you turned it down to.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At the same printed percentage, %URL produces a larger real error on a small turned-down range, because the percentage is taken against a much bigger number.&lt;/p&gt;

&lt;p&gt;Sketch, in engineering units, not a vendor claim: URL = 100 bar, calibrated span = 10 bar (turndown 10:1).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;±0.1 %span is 0.01 bar at that span.&lt;/li&gt;
&lt;li&gt;±0.1 %URL is 0.10 bar on the same installation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The datasheet percentages looked identical. The loop error did not. Comparing a tight %span figure with a %URL figure, or with a "% of reading" flow specification, without converting them first will rank the wrong instrument.&lt;/p&gt;

&lt;p&gt;Long-term stability lines have the same trap. One vendor may quote drift as a percent of span; another quotes percent of URL per year. Those lines are not interchangeable with the reference-accuracy line, and BFSL (best-fit straight line) is not the same method as a terminal-based accuracy statement.&lt;/p&gt;

&lt;h2&gt;
  
  
  A check before the RFQ
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Write down the URL and the calibrated span you will actually buy.&lt;/li&gt;
&lt;li&gt;Note whether each accuracy line is %span, %URL, or % of reading, and which method (BFSL or terminal) it uses.&lt;/li&gt;
&lt;li&gt;Convert every line into engineering units at your span before you rank vendors.&lt;/li&gt;
&lt;li&gt;Treat turndown as part of the error budget, not as a footnote.&lt;/li&gt;
&lt;li&gt;Confirm the output the PLC expects (4-20 mA, HART, or a fieldbus) and the fault behavior (for example NAMUR NE 43 currents outside 3.8-20.5 mA) separately from the accuracy reference.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This note is selection research, not a product offer. SpecForge is an industrial product specification encyclopedia for procurement engineers, automation integrators, and metrology readers. It compares datasheet-level parameters for instruments such as pressure transmitters, PLCs, VFDs, sensors, pumps, and valves. It is not a manufacturer or a distributor, and it does not sell the devices discussed here.&lt;/p&gt;

&lt;p&gt;The longer decoding of the %span versus %URL trap, with the selection order and the NAMUR NE 43 fault-current behavior, is in the SpecForge pressure transmitter guide:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.sourcebyspec.com/encyclopedia/pressure-transmitter.html" rel="noopener noreferrer"&gt;https://www.sourcebyspec.com/encyclopedia/pressure-transmitter.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Verify every value against the manufacturer's current PDF before procurement. A directory figure is a reading aid, not a substitute for the datasheet you will attach to the purchase order.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>softwareengineering</category>
      <category>tutorial</category>
      <category>datascience</category>
    </item>
    <item>
      <title>Compress a PDF Locally Before You Hit the Email Cap: A Privacy-First Size Checklist</title>
      <dc:creator>Magill Anway</dc:creator>
      <pubDate>Tue, 29 Sep 2026 01:38:39 +0000</pubDate>
      <link>https://dev.to/magill_anway_bc9442bb1125/compress-a-pdf-locally-before-you-hit-the-email-cap-a-privacy-first-size-checklist-4a8d</link>
      <guid>https://dev.to/magill_anway_bc9442bb1125/compress-a-pdf-locally-before-you-hit-the-email-cap-a-privacy-first-size-checklist-4a8d</guid>
      <description>&lt;h1&gt;
  
  
  Compress a PDF Locally Before You Hit the Email Cap: A Privacy-First Size Checklist
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer first:&lt;/strong&gt; If a scanned contract, tax packet, or HR form is too large for email or a portal, &lt;strong&gt;shrink it on your machine before any “free compress PDF online” host sees the bytes&lt;/strong&gt;. Size caps are a UX problem. Uploading sensitive pages to fix them is a privacy problem. 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;Teams still bounce 20 MB scan packs off Gmail or a government upload form, then paste the same file into the first Google result for “compress PDF.” That host briefly receives every page — medical, financial, or signed. The useful habit is not another brand name. It is: &lt;strong&gt;treat size reduction as part of the local prep, then send once&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Cloud compressors also leave a history of files you “temporarily” uploaded. Local compression cuts that trail without changing the UX of attaching a smaller PDF.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Know the real cap.&lt;/strong&gt; Email ~25 MB, many portals 2–10 MB. Measure the file before you hunt tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefer local compress over “upload then hope the host deletes it.”&lt;/strong&gt; Fewer hops means fewer accidental leaks into vendor logs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch the Network tab.&lt;/strong&gt; Open DevTools → Network, clear the log, try a &lt;em&gt;non-sensitive&lt;/em&gt; sample PDF. Pass = no multipart POST carrying your file 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 compression still finishes, upload-to-server architecture is off the table for that action.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Send the shrunk artifact once.&lt;/strong&gt; Attach the compressed PDF — do not leave the original sitting in a cloud draft next to your passport scan.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;h3&gt;
  
  
  Step 1 — Keep sensitive packets offline until ready
&lt;/h3&gt;

&lt;p&gt;Do not open tax or medical PDFs in a random tab until you are ready to shrink the ones you will send.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 — Decide quality vs size
&lt;/h3&gt;

&lt;p&gt;Image-heavy scans tolerate more loss. Text-heavy contracts need a lighter pass so pages stay readable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3 — Compress in the tab
&lt;/h3&gt;

&lt;p&gt;Drop the file into a browser-local PDF compressor. Closing the tab should clear in-memory copies; the file you download is the artifact you send.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4 — Share once
&lt;/h3&gt;

&lt;p&gt;Skip the detour through a random “free compress PDF online” host for packets 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 PDF compressor without creating an account, this Compress PDF tool runs in the tab (files stay on your device):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.lizecheng.net/pdf/compress-pdf/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260929&amp;amp;utm_content=compress-pdf" rel="noopener noreferrer"&gt;https://www.lizecheng.net/pdf/compress-pdf/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260929&amp;amp;utm_content=compress-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;18 MB passport scan for a portal with 5 MB cap&lt;/td&gt;
&lt;td&gt;Compress locally → send once&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-page receipt pack choking email&lt;/td&gt;
&lt;td&gt;Compress locally; split if still huge&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deck export with huge embedded photos&lt;/td&gt;
&lt;td&gt;Compress locally before Slack/email&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mixed public brochure + private annex&lt;/td&gt;
&lt;td&gt;Two files; never upload the private annex&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;PDF size is a solved UX problem. The open question is whether the bytes leave your device on the way to the recipient. Prefer tools you can verify with Network + offline checks — and keep cloud compressors for files you would not mind a stranger viewing.&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>pdf</category>
    </item>
    <item>
      <title>Strip PDF Metadata Locally Before You Share: A Privacy Checklist for Contracts and Scans</title>
      <dc:creator>Magill Anway</dc:creator>
      <pubDate>Mon, 28 Sep 2026 01:44:51 +0000</pubDate>
      <link>https://dev.to/magill_anway_bc9442bb1125/strip-pdf-metadata-locally-before-you-share-a-privacy-checklist-for-contracts-and-scans-40k9</link>
      <guid>https://dev.to/magill_anway_bc9442bb1125/strip-pdf-metadata-locally-before-you-share-a-privacy-checklist-for-contracts-and-scans-40k9</guid>
      <description>&lt;h1&gt;
  
  
  Strip PDF Metadata Locally Before You Share: A Privacy Checklist for Contracts and Scans
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer first:&lt;/strong&gt; If a signed contract, medical scan, or HR packet still carries Author, Title, Producer, or Creator Tool fields from your laptop, &lt;strong&gt;edit that metadata on your machine before any cloud converter sees the file&lt;/strong&gt;. Free "edit PDF online" sites are convenient — and they briefly receive every page you upload. 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;Teams still email "final" PDFs that quietly leak usernames, internal tool names, and prior revision titles in the Info dictionary. The useful takeaway is not another brand name — it is a habit: &lt;strong&gt;treat metadata as part of the document until you have stripped or rewritten the fields you mean to share&lt;/strong&gt;, then send once.&lt;/p&gt;

&lt;p&gt;Cloud editors also leave a history of files you "temporarily" uploaded. Local metadata edits cut that trail without changing the UX of attaching a clean PDF.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Know what Info shows.&lt;/strong&gt; Author, Title, Subject, Keywords, Creator, Producer, creation/mod dates. Assume every field is hot until you inspect locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefer local edit over "upload then hope the host deletes it."&lt;/strong&gt; Fewer hops means fewer accidental leaks into vendor logs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch the Network tab.&lt;/strong&gt; Open DevTools, Network, clear the log, try a non-sensitive sample PDF. Pass = no multipart POST carrying your file 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 metadata edit still finishes, upload-to-server architecture is off the table for that action.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Send the cleaned artifact once.&lt;/strong&gt; Attach the edited PDF — do not leave the original with your username sitting in a cloud draft.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;h3&gt;
  
  
  Step 1 — Inspect offline if needed
&lt;/h3&gt;

&lt;p&gt;Keep contracts offline until you are ready to clean the ones you will send.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 — Decide what must stay
&lt;/h3&gt;

&lt;p&gt;Public titles can stay; laptop usernames and internal tool strings should not leave the device.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3 — Edit in the tab
&lt;/h3&gt;

&lt;p&gt;Drop the file into a browser-local PDF metadata editor. Closing the tab should clear in-memory copies; the file you download is the artifact you send.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4 — Share once
&lt;/h3&gt;

&lt;p&gt;Skip the detour through a random "free edit PDF online" host for packets 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 PDF metadata editor without creating an account, this PDF Metadata Editor runs in the tab (files stay on your device):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.lizecheng.net/pdf/pdf-metadata-editor/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260928&amp;amp;utm_content=pdf-metadata" rel="noopener noreferrer"&gt;https://www.lizecheng.net/pdf/pdf-metadata-editor/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260928&amp;amp;utm_content=pdf-metadata&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;Contract with your Windows username as Author&lt;/td&gt;
&lt;td&gt;Clear/rewrite Author locally, then send once&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scan whose Producer field names internal OCR&lt;/td&gt;
&lt;td&gt;Strip Producer locally&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deck PDF with old Title from a prior client&lt;/td&gt;
&lt;td&gt;Rewrite Title locally&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mixed public brochure + private annex&lt;/td&gt;
&lt;td&gt;Two files; never upload the private annex&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;PDF metadata is a solved UX problem. The open question is whether the bytes leave your device on the way to the recipient. Prefer tools you can verify with Network + offline checks — and keep cloud editors for files you would not mind a stranger viewing.&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>security</category>
    </item>
    <item>
      <title>Compress Screenshots Locally Before You Upload: A Privacy Checklist for Tickets and Chat</title>
      <dc:creator>Magill Anway</dc:creator>
      <pubDate>Sun, 27 Sep 2026 01:41:47 +0000</pubDate>
      <link>https://dev.to/magill_anway_bc9442bb1125/compress-screenshots-locally-before-you-upload-a-privacy-checklist-for-tickets-and-chat-1aa4</link>
      <guid>https://dev.to/magill_anway_bc9442bb1125/compress-screenshots-locally-before-you-upload-a-privacy-checklist-for-tickets-and-chat-1aa4</guid>
      <description>&lt;h1&gt;
  
  
  Compress Screenshots Locally Before You Upload: A Privacy Checklist for Tickets and Chat
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer first:&lt;/strong&gt; If a support ticket, Slack thread, or bug report still carries a full-resolution dashboard screenshot (account IDs, staging URLs, customer emails in the chrome), &lt;strong&gt;compress it on your machine before any cloud media host sees the file&lt;/strong&gt;. Free “compress image online” sites are convenient  and they briefly receive every pixel you upload. 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;Teams still paste raw Retina captures “just in case.” The useful takeaway is not another brand name — it is a habit: &lt;strong&gt;treat the screenshot as sensitive until you have shrunk it to the size you mean to share&lt;/strong&gt;, then attach once.&lt;/p&gt;

&lt;p&gt;Cloud compressors also leave a history of files you “temporarily” uploaded. Local compress cuts that trail without changing the UX of attaching a readable image.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Know what the chrome shows.&lt;/strong&gt; Account numbers, prior chat names, staging URLs, badge scans. Assume every pixel is hot until you process locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefer local compress over “upload then hope the host deletes it.”&lt;/strong&gt; Fewer hops means fewer accidental leaks into vendor logs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch the Network tab.&lt;/strong&gt; Open DevTools → Network, clear the log, try a &lt;em&gt;non-sensitive&lt;/em&gt; sample PNG. Pass = no multipart POST carrying your file 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 compress still finishes, upload-to-server architecture is off the table for that action.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Send the smallest correct artifact.&lt;/strong&gt; Attach the compressed image — do not leave the 8 MB original sitting in a cloud draft.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;h3&gt;
  
  
  Step 1 — Capture offline if needed
&lt;/h3&gt;

&lt;p&gt;Keep ticket screenshots offline until you are ready to shrink the ones you will paste.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 — Crop what you do not need
&lt;/h3&gt;

&lt;p&gt;Note sidebar lists, earlier revisions, or ID scans that should never leave your device.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3 — Compress in the tab
&lt;/h3&gt;

&lt;p&gt;Drop the file into a browser-local image compressor. Closing the tab should clear in-memory copies; the file you download is the artifact you send.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4 — Share once
&lt;/h3&gt;

&lt;p&gt;Skip the detour through a random “free compress image online” host for screenshots 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 image compressor without creating an account, this Image Compressor runs in the tab (files stay on your device):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.lizecheng.net/image/image-compressor/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260927&amp;amp;utm_content=image-compressor" rel="noopener noreferrer"&gt;https://www.lizecheng.net/image/image-compressor/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260927&amp;amp;utm_content=image-compressor&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;8 MB Retina dashboard for a ticket&lt;/td&gt;
&lt;td&gt;Compress locally → attach once&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Slack paste with customer email in chrome&lt;/td&gt;
&lt;td&gt;Crop + compress locally&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bug report with staging URL in the URL bar&lt;/td&gt;
&lt;td&gt;Crop URL bar locally before share&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mixed public UI + private PII panel&lt;/td&gt;
&lt;td&gt;Two files; never upload the private panel&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 compression is a solved UX problem. The open question is whether the bytes leave your device on the way to the recipient. Prefer tools you can verify with Network + offline checks — and keep cloud compressors for images you would not mind a stranger viewing.&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>security</category>
    </item>
    <item>
      <title>Split PDFs Locally Before You Share: A Privacy Checklist for Contracts and Scans</title>
      <dc:creator>Magill Anway</dc:creator>
      <pubDate>Sat, 26 Sep 2026 01:40:59 +0000</pubDate>
      <link>https://dev.to/magill_anway_bc9442bb1125/split-pdfs-locally-before-you-share-a-privacy-checklist-for-contracts-and-scans-4al7</link>
      <guid>https://dev.to/magill_anway_bc9442bb1125/split-pdfs-locally-before-you-share-a-privacy-checklist-for-contracts-and-scans-4al7</guid>
      <description>&lt;h1&gt;
  
  
  Split PDFs Locally Before You Share: A Privacy Checklist for Contracts and Scans
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer first:&lt;/strong&gt; If a signed PDF packet still contains pages you do not need to send (bank statements, earlier drafts, ID scans), &lt;strong&gt;split it on your machine before any cloud converter sees the file&lt;/strong&gt;. Free “split PDF online” sites are convenient — and they briefly receive every page you upload. 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;Teams still forward entire multi-page packets “just in case.” The useful takeaway is not another brand name — it is a habit: &lt;strong&gt;treat the PDF as sensitive until you have extracted only the pages you mean to share&lt;/strong&gt;, then attach once.&lt;/p&gt;

&lt;p&gt;Cloud splitters also leave a history of files you temporarily uploaded. Local split cuts that trail without changing the UX of attaching a correctly sliced PDF.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Know what extra pages show.&lt;/strong&gt; Account numbers, prior signatures, staging URLs, badge scans. Assume every page is hot until you process locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefer local split over “upload then hope the host deletes it.”&lt;/strong&gt; Fewer hops means fewer accidental leaks into vendor logs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch the Network tab.&lt;/strong&gt; Open DevTools → Network, clear the log, try a &lt;em&gt;non-sensitive&lt;/em&gt; sample PDF. Pass = no multipart POST carrying your file 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 split still finishes, upload-to-server architecture is off the table for that action.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Send the smallest correct artifact.&lt;/strong&gt; Attach the sliced PDF — do not leave the full packet sitting in a cloud draft.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;h3&gt;
  
  
  Step 1 — Capture offline if needed
&lt;/h3&gt;

&lt;p&gt;Keep contract packets offline until you are ready to extract the pages you will email.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 — Mark pages you do not need
&lt;/h3&gt;

&lt;p&gt;Note cover sheets, earlier revisions, or ID scans that should never leave your device.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3 — Split in the tab
&lt;/h3&gt;

&lt;p&gt;Drop the file into a browser-local PDF splitter. Closing the tab should clear in-memory copies; the file you download is the artifact you send.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4 — Share once
&lt;/h3&gt;

&lt;p&gt;Skip the detour through a random “free split PDF online” host for documents 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 PDF splitter without creating an account, this Split PDF tool runs in the tab (files stay on your device):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.lizecheng.net/pdf/split-pdf/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260926&amp;amp;utm_content=split-pdf" rel="noopener noreferrer"&gt;https://www.lizecheng.net/pdf/split-pdf/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260926&amp;amp;utm_content=split-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;12-page packet, only pages 3–5 needed&lt;/td&gt;
&lt;td&gt;Split locally → email once&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Client contract with earlier draft attached&lt;/td&gt;
&lt;td&gt;Extract final pages locally&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scan batch with ID page in the middle&lt;/td&gt;
&lt;td&gt;Remove ID page locally before share&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mixed public appendix + private annex&lt;/td&gt;
&lt;td&gt;Two files; never upload the private annex&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;PDF splitting is a solved UX problem. The open question is whether the bytes leave your device on the way to the recipient. Prefer tools you can verify with Network + offline checks — and keep cloud splitters for documents you would not mind a stranger viewing.&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>security</category>
    </item>
    <item>
      <title>Resize Images Locally Before WordPress Upload: A Privacy Checklist</title>
      <dc:creator>Magill Anway</dc:creator>
      <pubDate>Fri, 25 Sep 2026 01:40:39 +0000</pubDate>
      <link>https://dev.to/magill_anway_bc9442bb1125/resize-images-locally-before-wordpress-upload-a-privacy-checklist-1oc8</link>
      <guid>https://dev.to/magill_anway_bc9442bb1125/resize-images-locally-before-wordpress-upload-a-privacy-checklist-1oc8</guid>
      <description>&lt;h3&gt;
  
  
  Step 2 — Crop what you do not need
&lt;/h3&gt;

&lt;p&gt;Crop out sidebar nav or chat bubbles that leak context before you resize.&lt;/p&gt;

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

&lt;p&gt;Drop the file into a browser-local image resizer. Closing the tab should clear in-memory copies; the file you download is the artifact you upload.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4 — Upload once
&lt;/h3&gt;

&lt;p&gt;Skip the detour through a random “free resize online” host for images 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 image 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_20260925&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_20260925&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;Featured image with staging URL in corner&lt;/td&gt;
&lt;td&gt;Crop + resize locally → upload once&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Client UI bug report for WP post&lt;/td&gt;
&lt;td&gt;Resize locally → attach&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Marketing asset with emails visible&lt;/td&gt;
&lt;td&gt;Redact + resize locally&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mixed public hero + private panel&lt;/td&gt;
&lt;td&gt;Two files; never upload the private panel&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 sizing is a solved UX problem. The open question is whether the pixels leave your device on the way to your media library. Prefer tools you can verify with Network + offline checks — and keep cloud resizers for photos you would not mind a stranger viewing.&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>security</category>
    </item>
    <item>
      <title>Compress Images Locally: A Privacy Checklist Before You Upload Screenshots</title>
      <dc:creator>Magill Anway</dc:creator>
      <pubDate>Thu, 24 Sep 2026 01:50:06 +0000</pubDate>
      <link>https://dev.to/magill_anway_bc9442bb1125/compress-images-locally-a-privacy-checklist-before-you-upload-screenshots-3ibo</link>
      <guid>https://dev.to/magill_anway_bc9442bb1125/compress-images-locally-a-privacy-checklist-before-you-upload-screenshots-3ibo</guid>
      <description>&lt;h1&gt;
  
  
  Compress Images Locally: A Privacy Checklist Before You Upload Screenshots
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer first:&lt;/strong&gt; If a screenshot shows a customer name, a staging URL, or an internal dashboard, &lt;strong&gt;compress it on your machine before you drop it into a cloud image compressor&lt;/strong&gt;. Free online compressors are convenient — and they briefly see every pixel you upload. 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;Support threads still treat free image compressors like a trash chute. The useful takeaway is not another brand name — it is a habit: &lt;strong&gt;treat the bitmap as sensitive until you have shrunk it locally&lt;/strong&gt;, then attach or post once.&lt;/p&gt;

&lt;p&gt;Cloud compressors also leave a history of files you “temporarily” uploaded for a Slack paste. Local compression cuts that trail without changing the UX of sharing a smaller PNG.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Watch the Network tab.&lt;/strong&gt; Open DevTools → Network, clear the log, try a &lt;em&gt;non-sensitive&lt;/em&gt; sample image. Pass = no multipart POST carrying your file 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 compression still finishes, upload-to-server architecture is off the table for that action.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share the smallest artifact.&lt;/strong&gt; Attach the compressed PNG/JPEG — do not leave the original sitting in a cloud draft.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;h3&gt;
  
  
  Step 1 — Capture offline if needed
&lt;/h3&gt;

&lt;p&gt;Keep dashboard screenshots offline until you are ready to shrink them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 — Trim what you do not need
&lt;/h3&gt;

&lt;p&gt;Crop out sidebar nav or chat bubbles that leak context before you compress.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3 — Compress in the tab
&lt;/h3&gt;

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

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

&lt;p&gt;&lt;a href="https://www.lizecheng.net/image/image-compressor/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260924&amp;amp;utm_content=image-compressor" rel="noopener noreferrer"&gt;https://www.lizecheng.net/image/image-compressor/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260924&amp;amp;utm_content=image-compressor&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;Client UI bug report&lt;/td&gt;
&lt;td&gt;Compress locally → attach PNG&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Internal dashboard share&lt;/td&gt;
&lt;td&gt;Crop + compress → share once&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Marketing screenshot with emails&lt;/td&gt;
&lt;td&gt;Redact + compress locally&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mixed public asset + private panel&lt;/td&gt;
&lt;td&gt;Two files; never upload the private panel&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 compression is a solved UX problem. The open question is whether the pixels leave your device on the way. Prefer tools you can verify with Network + offline checks — and keep cloud compressors for photos you would not mind a stranger viewing.&lt;br&gt;
Drop the file into a browser-local image compressor. Closing the tab should clear in-memory copies; the file you download is the artifact you send.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4 — Share once
&lt;/h3&gt;

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

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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Know what the image shows.&lt;/strong&gt; Customer PII, internal URLs, badge scans, staging panels. Assume the pixels are hot until you process locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefer local compress over “upload then hope the host deletes it.”&lt;/strong&gt; Fewer hops means fewer accidental leaks into vendor logs.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>privacy</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>security</category>
    </item>
    <item>
      <title>Generate QR Codes Locally: A Privacy Checklist for Wi‑Fi, Events, and Offline Handouts</title>
      <dc:creator>Magill Anway</dc:creator>
      <pubDate>Wed, 23 Sep 2026 01:52:50 +0000</pubDate>
      <link>https://dev.to/magill_anway_bc9442bb1125/generate-qr-codes-locally-a-privacy-checklist-for-wi-fi-events-and-offline-handouts-5gio</link>
      <guid>https://dev.to/magill_anway_bc9442bb1125/generate-qr-codes-locally-a-privacy-checklist-for-wi-fi-events-and-offline-handouts-5gio</guid>
      <description>&lt;h1&gt;
  
  
  Generate QR Codes Locally: A Privacy Checklist for Wi‑Fi, Events, and Offline Handouts
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer first:&lt;/strong&gt; If a QR encodes a Wi‑Fi password, a private event RSVP, or an internal URL, &lt;strong&gt;generate it on your machine before you paste that string into a cloud QR site&lt;/strong&gt;. Free online generators are convenient — and they briefly see every payload you type. 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;Support threads still treat free QR generators like notepads. The useful takeaway is not another brand name — it is a habit: &lt;strong&gt;treat the payload as sensitive until you have rendered the code locally&lt;/strong&gt;, then print or share once.&lt;/p&gt;

&lt;p&gt;Cloud generators also leave a history of strings you typed for “temporary” event badges. Local rendering cuts that trail without changing the UX 3. &lt;strong&gt;Watch the Network tab.&lt;/strong&gt; Open DevTools → Network, clear the log, try a &lt;em&gt;non-sensitive&lt;/em&gt; sample string. Pass = no multipart POST carrying your text to a third-party API.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Airplane-mode sanity check.&lt;/strong&gt; After page assets load, go offline and retry. If QR still renders, upload-to-server architecture is off the table for that action.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share the smallest artifact.&lt;/strong&gt; Print or export the PNG/SVG — do not leave the raw password sitting in a cloud draft.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;h3&gt;
  
  
  Step 1 — Draft the payload offline if needed
&lt;/h3&gt;

&lt;p&gt;Keep Wi‑Fi credentials or staging URLs offline until you are ready to render.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 — Choose the right content type
&lt;/h3&gt;

&lt;p&gt;Plain URL, Wi‑Fi (&lt;code&gt;WIFI:T:WPA;S:...;P:...;;&lt;/code&gt;), or short text for a handout — nothing else.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3 — Generate in the tab
&lt;/h3&gt;

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

&lt;p&gt;When you need an on-device QR generator without creating an account, this QR Code Generator runs in the tab (payload stays on your device):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.lizecheng.net/seo/qr-code-generator/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260923&amp;amp;utm_content=qr-code" rel="noopener noreferrer"&gt;https://www.lizecheng.net/seo/qr-code-generator/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260923&amp;amp;utm_content=qr-code&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;Guest Wi‑Fi card for visitors&lt;/td&gt;
&lt;td&gt;Generate locally → print PNG&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Private event RSVP QR&lt;/td&gt;
&lt;td&gt;Render locally → embed in invite PDF&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Staging URL for a demo booth&lt;/td&gt;
&lt;td&gt;Generate → share once; keep URL offline otherwise&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mixed public landing + private PSK&lt;/td&gt;
&lt;td&gt;Two codes; never paste the PSK into a cloud generator&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;QR generation is a solved UX problem. The open question is whether the payload leaves your device on the way. Prefer tools you can verify with Network + offline checks — and keep cloud generators for strings you would not mind a stranger reading.&lt;br&gt;
Drop the string into a browser-local QR tool. Closing the tab should clear in-memory copies; the PNG you download is the artifact you print or embed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4 — Share once
&lt;/h3&gt;

&lt;p&gt;Skip the detour through a random “free QR online” host for payloads you would not email to a stranger.&lt;br&gt;
of scanning.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Know what the QR encodes.&lt;/strong&gt; Wi‑Fi PSK, private RSVP links, staging URLs, tracking tokens. Assume the payload is hot until you render locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefer local generate over “paste then hope the host deletes it.”&lt;/strong&gt; Fewer hops means fewer accidental leaks into vendor logs.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>privacy</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>security</category>
    </item>
    <item>
      <title>Split PDFs Locally Before You Share: A Privacy Checklist for Contracts</title>
      <dc:creator>Magill Anway</dc:creator>
      <pubDate>Tue, 22 Sep 2026 01:52:43 +0000</pubDate>
      <link>https://dev.to/magill_anway_bc9442bb1125/split-pdfs-locally-before-you-share-a-privacy-checklist-for-contracts-n0l</link>
      <guid>https://dev.to/magill_anway_bc9442bb1125/split-pdfs-locally-before-you-share-a-privacy-checklist-for-contracts-n0l</guid>
      <description>&lt;h1&gt;
  
  
  Split PDFs Locally Before You Share: A Privacy Checklist for Contracts
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer first:&lt;/strong&gt; If a PDF holds contracts, IDs, or customer data and you only need a few pages, &lt;strong&gt;extract those pages on your machine before you upload or email anything&lt;/strong&gt;. Cloud “split PDF online” sites are convenient — and they briefly hold every page you upload. 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;Support threads still treat free online PDF splitters like notepads. The useful takeaway is not another brand name — it is a habit: &lt;strong&gt;treat the full document as sensitive until you have extracted only what you need locally&lt;/strong&gt;, then share once.&lt;/p&gt;

&lt;p&gt;Oversized multi-page scans also clog email and ticket systems. Splitting locally cuts size without sending the original off-device first.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Know what is in the full file.&lt;/strong&gt; Cover pages, appendices, signatures, account numbers, internal URLs. Assume the whole PDF is hot until you extract.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefer local split over “upload then hope the host deletes it.”&lt;/strong&gt; Fewer hops means fewer accidental leaks into vendor logs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch the Network tab.&lt;/strong&gt; Open DevTools → Network, clear the log, try a &lt;em&gt;non-sensitive&lt;/em&gt; sample. Pass = no multipart POST carrying your PDF 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 split still works, upload-to-server architecture is off the table for that action.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share the smallest artifact.&lt;/strong&gt; Send the extracted pages — not the 40-page binder you started with.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;h3&gt;
  
  
  Step 1 — Open the source offline if needed
&lt;/h3&gt;

&lt;p&gt;Keep the original offline if you still need full fidelity for archives.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 — Mark the pages you actually need
&lt;/h3&gt;

&lt;p&gt;Page ranges for the counterparty, ticket, or form — nothing else.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3 — Split in the tab
&lt;/h3&gt;

&lt;p&gt;Drop the PDF into a browser-local splitter. Closing the tab should clear in-memory copies; the file you download is the artifact you share.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4 — Share once
&lt;/h3&gt;

&lt;p&gt;Skip the detour through a random “free split PDF online” host for documents 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 PDF splitter without creating an account, this Split PDF tool runs in the tab (files stay on your device):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.lizecheng.net/pdf/split-pdf/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260922&amp;amp;utm_content=split-pdf" rel="noopener noreferrer"&gt;https://www.lizecheng.net/pdf/split-pdf/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260922&amp;amp;utm_content=split-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;Counterparty needs pages 3–5 of a contract&lt;/td&gt;
&lt;td&gt;Extract locally → email those pages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ticket needs one scan page from a long PDF&lt;/td&gt;
&lt;td&gt;Split locally → attach the page&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Share a signature page only&lt;/td&gt;
&lt;td&gt;Extract → share; keep the rest offline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mixed sensitive + public appendix&lt;/td&gt;
&lt;td&gt;Split locally; never upload the full binder&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;PDF split 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 splitters for files you would not mind a stranger reading.&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>security</category>
    </item>
    <item>
      <title>Compress Screenshots Before You Paste: A Local Checklist for Chat and Tickets</title>
      <dc:creator>Magill Anway</dc:creator>
      <pubDate>Mon, 21 Sep 2026 01:50:18 +0000</pubDate>
      <link>https://dev.to/magill_anway_bc9442bb1125/compress-screenshots-before-you-paste-a-local-checklist-for-chat-and-tickets-12ld</link>
      <guid>https://dev.to/magill_anway_bc9442bb1125/compress-screenshots-before-you-paste-a-local-checklist-for-chat-and-tickets-12ld</guid>
      <description>&lt;h1&gt;
  
  
  Compress Screenshots Before You Paste: A Local Checklist for Chat and Tickets
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer first:&lt;/strong&gt; If a screenshot might show emails, IDs, dashboards, or customer data, &lt;strong&gt;shrink it on your machine before you paste it into Slack, Discord, or a ticket&lt;/strong&gt;. Cloud compressors are convenient — and they briefly hold every pixel you upload. Below is a practical checklist plus a local workflow.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Step 1 — Capture
&lt;/h3&gt;

&lt;p&gt;Use your OS screenshot tool or browser capture. Keep the original offline if you still need full fidelity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 — Crop PII
&lt;/h3&gt;

&lt;p&gt;Remove chrome, unread badges, and anything outside the bug. Smaller canvas = smaller file and less accidental disclosure.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3 — Compress in the tab
&lt;/h3&gt;

&lt;p&gt;Drop the cropped file into a browser-local compressor. Closing the tab should clear in-memory copies; the file you download is the artifact you paste.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4 — Paste once
&lt;/h3&gt;

&lt;p&gt;Skip the detour through a random “free compress online” host for shots 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 compressor without creating an account, this Image Compressor runs in the tab (files stay on your device):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.lizecheng.net/image/image-compressor/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260921&amp;amp;utm_content=image-compressor" rel="noopener noreferrer"&gt;https://www.lizecheng.net/image/image-compressor/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260921&amp;amp;utm_content=image-compressor&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;Bug report with a huge Retina PNG&lt;/td&gt;
&lt;td&gt;Crop → compress locally → paste&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Screenshot of a customer dashboard&lt;/td&gt;
&lt;td&gt;Crop PII → compress → ticket&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Share a UI mock in chat&lt;/td&gt;
&lt;td&gt;Compress first; do not upload the raw capture&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mixed JPEG/PNG batch&lt;/td&gt;
&lt;td&gt;Compress each locally; skip cloud batch uploaders&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 compression 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 compressors for files you would not mind a stranger viewing.&lt;br&gt;
Support threads still treat “free online image compressor” sites like notepads. The useful takeaway is not another brand name — it is a habit: &lt;strong&gt;treat the capture as sensitive until you have cropped and compressed it locally&lt;/strong&gt;, then paste once.&lt;/p&gt;

&lt;p&gt;Oversized PNGs from Retina displays also clog channels and tickets. Compressing locally cuts size without sending the original off-device first.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Know what is visible.&lt;/strong&gt; Browser chrome, email addresses, account IDs, internal URLs, chat sidebars. Assume the whole frame is hot until cropped.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefer local compress over “upload then hope the host deletes it.”&lt;/strong&gt; Fewer hops means fewer accidental leaks into vendor logs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch the Network tab.&lt;/strong&gt; Open DevTools → Network, clear the log, try a &lt;em&gt;non-sensitive&lt;/em&gt; sample. Pass = no multipart POST carrying your image 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 compress still works, upload-to-server architecture is off the table for that action.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Crop before you share.&lt;/strong&gt; Hide the address bar and adjacent tabs in the copy you paste — not only in the archive you keep locally.&lt;/li&gt;
&lt;/ol&gt;

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

</description>
      <category>privacy</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>security</category>
    </item>
    <item>
      <title>Pretty-Print JSON Without Leaking Tokens: A Local Checklist for API Debugging</title>
      <dc:creator>Magill Anway</dc:creator>
      <pubDate>Sun, 20 Sep 2026 01:41:43 +0000</pubDate>
      <link>https://dev.to/magill_anway_bc9442bb1125/pretty-print-json-without-leaking-tokens-a-local-checklist-for-api-debugging-1ap0</link>
      <guid>https://dev.to/magill_anway_bc9442bb1125/pretty-print-json-without-leaking-tokens-a-local-checklist-for-api-debugging-1ap0</guid>
      <description>&lt;h1&gt;
  
  
  Pretty-Print JSON Without Leaking Tokens: A Local Checklist for API Debugging
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer first:&lt;/strong&gt; If the payload might contain access tokens, PII, or internal IDs, &lt;strong&gt;format it in your browser on your machine&lt;/strong&gt; before you paste it into a ticket or a “free online JSON” site. Cloud formatters are convenient — and they are also a third party that briefly holds every key in the response. 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;Support threads and Discord pastes still treat JSON beautifiers like notepads. The useful takeaway is not another brand name — it is a habit: &lt;strong&gt;treat the response as sensitive until you have redacted it&lt;/strong&gt;, then share a trimmed copy once.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Know what is secret.&lt;/strong&gt; &lt;code&gt;Authorization&lt;/code&gt;, refresh tokens, emails, internal URLs. Assume the whole blob is hot until proven otherwise.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefer local format over “upload then hope the host deletes it.”&lt;/strong&gt; Fewer hops means fewer accidental leaks into vendor logs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch the Network tab.&lt;/strong&gt; Open DevTools → Network, clear the log, paste a &lt;em&gt;non-sensitive&lt;/em&gt; sample. Pass = no multipart POST carrying your JSON 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 pretty-print still works, upload-to-server architecture is off the table for that action.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redact before you share.&lt;/strong&gt; Replace tokens with &lt;code&gt;***&lt;/code&gt; in the copy you put in Linear/Jira, not in the live response you keep locally.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;h3&gt;
  
  
  Step 3 — Redact
&lt;/h3&gt;

&lt;p&gt;Search for &lt;code&gt;Bearer&lt;/code&gt;, &lt;code&gt;token&lt;/code&gt;, &lt;code&gt;@&lt;/code&gt;, and internal hostnames. Strip or mask before paste.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4 — Share once
&lt;/h3&gt;

&lt;p&gt;Skip the detour through a random “free JSON online” host for payloads 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 formatter without creating an account, this JSON Formatter runs in the tab (files stay on your device):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.lizecheng.net/dev/json-formatter/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260920&amp;amp;utm_content=json-formatter" rel="noopener noreferrer"&gt;https://www.lizecheng.net/dev/json-formatter/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=lizely_daily_20260920&amp;amp;utm_content=json-formatter&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;Debug a 401 with a huge body&lt;/td&gt;
&lt;td&gt;Format locally → redact → paste snippet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Share sample webhook payload&lt;/td&gt;
&lt;td&gt;Format → strip secrets → ticket&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compare two API versions&lt;/td&gt;
&lt;td&gt;Format both locally; do not upload either&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tokens in nested objects&lt;/td&gt;
&lt;td&gt;Search the tree before any cloud hop&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;JSON formatting 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 beautifiers for files you would not mind a stranger reading.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1 — Capture the response
&lt;/h3&gt;

&lt;p&gt;Copy from DevTools or save the &lt;code&gt;.json&lt;/code&gt; from your client. Keep the original offline.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 — Pretty-print in the tab
&lt;/h3&gt;

&lt;p&gt;Format locally. Closing the tab should clear in-memory copies; the file you download (if any) is the artifact you keep.&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
