<?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: Tomaz</title>
    <description>The latest articles on DEV Community by Tomaz (@tomaz_8a7b374c4dc1136233b).</description>
    <link>https://dev.to/tomaz_8a7b374c4dc1136233b</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%2F4084000%2F8ae7e4d6-ec1c-473b-9ee6-389a8ab10628.png</url>
      <title>DEV Community: Tomaz</title>
      <link>https://dev.to/tomaz_8a7b374c4dc1136233b</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tomaz_8a7b374c4dc1136233b"/>
    <language>en</language>
    <item>
      <title>🖼️ Poster Printer: One image a wall-sized poster, tiled across ordinary A4 pages</title>
      <dc:creator>Tomaz</dc:creator>
      <pubDate>Sun, 23 Aug 2026 05:01:56 +0000</pubDate>
      <link>https://dev.to/tomaz_8a7b374c4dc1136233b/poster-printer-one-image-a-wall-sized-poster-tiled-across-ordinary-a4-pages-3733</link>
      <guid>https://dev.to/tomaz_8a7b374c4dc1136233b/poster-printer-one-image-a-wall-sized-poster-tiled-across-ordinary-a4-pages-3733</guid>
      <description>&lt;h2&gt;
  
  
  ⚡ 10-second version
&lt;/h2&gt;

&lt;p&gt;You have a home printer that does A4 and you want a poster a metre tall. &lt;strong&gt;&lt;a href="https://tooladda.online/poster-printer.html" rel="noopener noreferrer"&gt;tooladda.online/poster-printer.html&lt;/a&gt;&lt;/strong&gt; slices your image into page-sized tiles, adds glue overlaps or trim marks, and hands you one PDF. Print, cut, join.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;❗ Important&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your image is read and sliced &lt;strong&gt;in your browser&lt;/strong&gt;. Nothing is uploaded — which matters if you're printing artwork you own, a client's design, or a photo of your family.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  📐 The arithmetic that decides if your poster looks good
&lt;/h2&gt;

&lt;p&gt;Two numbers make or break a tiled poster, and neither is obvious.&lt;/p&gt;

&lt;h3&gt;
  
  
  How many pages?
&lt;/h3&gt;

&lt;p&gt;A4 is 210 × 297 mm, but you can't print to the edge — most printers need ~5 mm margins, and a glue overlap eats a bit more. Call the usable contribution per page &lt;strong&gt;190 × 277 mm&lt;/strong&gt; with a 10 mm overlap.&lt;/p&gt;

&lt;p&gt;For a &lt;strong&gt;1000 × 700 mm&lt;/strong&gt; poster:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;columns = ceil(700  ÷ 190) = 4
rows    = ceil(1000 ÷ 277) = 4
                            ─────
                            16 A4 pages
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Is your image big enough?
&lt;/h3&gt;

&lt;p&gt;This is where most tiled posters fail. Printing that same 1000 × 700 mm poster at &lt;strong&gt;150 DPI&lt;/strong&gt; requires:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1000 mm ÷ 25.4 × 150  =  5906 px
 700 mm ÷ 25.4 × 150  =  4134 px
                          ────────
                          ≈ 24 megapixels
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Feed it an 800 × 600 phone screenshot and no software on earth will save it — you'll get a beautifully aligned mosaic of blur. &lt;strong&gt;150 DPI is fine for a wall poster viewed from a metre away&lt;/strong&gt;; 300 DPI is only worth it if people will stand close.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Poster size&lt;/th&gt;
&lt;th&gt;Min pixels @150 DPI&lt;/th&gt;
&lt;th&gt;Pages (A4, 10 mm overlap)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A2 (420 × 594 mm)&lt;/td&gt;
&lt;td&gt;2480 × 3508&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A1 (594 × 841 mm)&lt;/td&gt;
&lt;td&gt;3508 × 4967&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1000 × 700 mm&lt;/td&gt;
&lt;td&gt;5906 × 4134&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A0 (841 × 1189 mm)&lt;/td&gt;
&lt;td&gt;4967 × 7022&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🧭 How it works
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmermaid.ink%2Fimg%2FeyJjb2RlIjoiZmxvd2NoYXJ0IExSXG4gICAgQVtcIvCflrzvuI8gWW91ciBpbWFnZVwiXSAtLT4gQntcIllvdXIgYnJvd3NlclwifVxuICAgIEIgLS0-IENbXCJDaG9vc2UgdGFyZ2V0IHNpemU8YnIvPisgcGFwZXI6IEE0IMK3IEEzIMK3IExldHRlclwiXVxuICAgIEMgLS0-IERbXCJDb21wdXRlIGdyaWQ8YnIvPnJvd3Mgw5cgY29sdW1uc1wiXVxuICAgIEQgLS0-IEVbXCJTbGljZSB0aWxlczxici8-KyBnbHVlIG92ZXJsYXAgLyB0cmltIG1hcmtzXCJdXG4gICAgRSAtLT4gRltcIvCfk4QgT25lIG11bHRpLXBhZ2UgUERGXCJdXG4gICAgRiAtLT4gR1tcIvCflqjvuI8gUHJpbnQg4oaSIOKcgu-4jyBjdXQg4oaSIPCfp7Qgam9pblwiXVxuICAgIEIgLS4tPnxcIvCfmqsgbm8gdXBsb2FkXCJ8IFgoKFwiU2VydmVyXCIpKVxuXG4gICAgc3R5bGUgQSBmaWxsOiMwZWE1ZTksc3Ryb2tlOiMwMzY5YTEsY29sb3I6I2ZmZlxuICAgIHN0eWxlIEIgZmlsbDojN2MyZDEyLHN0cm9rZTojNDMxNDA3LGNvbG9yOiNmZmZcbiAgICBzdHlsZSBEIGZpbGw6I2ZiOTIzYyxzdHJva2U6I2MyNDEwYyxjb2xvcjojZmZmXG4gICAgc3R5bGUgRyBmaWxsOiMyMmM1NWUsc3Ryb2tlOiMxNTgwM2QsY29sb3I6I2ZmZlxuICAgIHN0eWxlIFggZmlsbDojM2YzZjQ2LHN0cm9rZTojNzE3MTdhLGNvbG9yOiNmZmYsc3Ryb2tlLWRhc2hhcnJheTogNSA1IiwibWVybWFpZCI6eyJ0aGVtZSI6ImRhcmsifX0%3Ftype%3Dpng" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmermaid.ink%2Fimg%2FeyJjb2RlIjoiZmxvd2NoYXJ0IExSXG4gICAgQVtcIvCflrzvuI8gWW91ciBpbWFnZVwiXSAtLT4gQntcIllvdXIgYnJvd3NlclwifVxuICAgIEIgLS0-IENbXCJDaG9vc2UgdGFyZ2V0IHNpemU8YnIvPisgcGFwZXI6IEE0IMK3IEEzIMK3IExldHRlclwiXVxuICAgIEMgLS0-IERbXCJDb21wdXRlIGdyaWQ8YnIvPnJvd3Mgw5cgY29sdW1uc1wiXVxuICAgIEQgLS0-IEVbXCJTbGljZSB0aWxlczxici8-KyBnbHVlIG92ZXJsYXAgLyB0cmltIG1hcmtzXCJdXG4gICAgRSAtLT4gRltcIvCfk4QgT25lIG11bHRpLXBhZ2UgUERGXCJdXG4gICAgRiAtLT4gR1tcIvCflqjvuI8gUHJpbnQg4oaSIOKcgu-4jyBjdXQg4oaSIPCfp7Qgam9pblwiXVxuICAgIEIgLS4tPnxcIvCfmqsgbm8gdXBsb2FkXCJ8IFgoKFwiU2VydmVyXCIpKVxuXG4gICAgc3R5bGUgQSBmaWxsOiMwZWE1ZTksc3Ryb2tlOiMwMzY5YTEsY29sb3I6I2ZmZlxuICAgIHN0eWxlIEIgZmlsbDojN2MyZDEyLHN0cm9rZTojNDMxNDA3LGNvbG9yOiNmZmZcbiAgICBzdHlsZSBEIGZpbGw6I2ZiOTIzYyxzdHJva2U6I2MyNDEwYyxjb2xvcjojZmZmXG4gICAgc3R5bGUgRyBmaWxsOiMyMmM1NWUsc3Ryb2tlOiMxNTgwM2QsY29sb3I6I2ZmZlxuICAgIHN0eWxlIFggZmlsbDojM2YzZjQ2LHN0cm9rZTojNzE3MTdhLGNvbG9yOiNmZmYsc3Ryb2tlLWRhc2hhcnJheTogNSA1IiwibWVybWFpZCI6eyJ0aGVtZSI6ImRhcmsifX0%3Ftype%3Dpng" alt="Diagram" width="1862" height="206"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ✨ What's inside
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="50%"&gt;

### 📄 Four paper sizes
A4, A3, Letter and Tabloid — portrait or landscape. Landscape tiles often need fewer pages for a wide image, and the tool shows you the count before you print.

&lt;/td&gt;
&lt;td width="50%"&gt;

### 🧴 Glue overlap **or** trim marks
Overlap mode leaves a strip to paste over the neighbouring tile (forgiving, slightly visible seams). Trim mode gives cut marks for a butt join (invisible seams, needs a steady hand).

&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="50%"&gt;

### 🔢 Live page count
Change the target size and the grid updates instantly. You find out it's 40 pages *before* you commit your ink cartridge.

&lt;/td&gt;
&lt;td width="50%"&gt;

### 🏷️ Tile numbering
Each page labelled with its row and column, so a stack of 16 identical-looking sheets can actually be assembled.

&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="50%"&gt;

### 📄 Single PDF output
One file, correct page order. No folder of 16 PNGs to print one at a time.

&lt;/td&gt;
&lt;td width="50%"&gt;

### 🔒 Fully client-side
No upload, no watermark, no size cap imposed by someone's server bill.

&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🛠️ What people print with it
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Situation&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🎉 &lt;strong&gt;Party or event banner&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;A birthday or wedding banner from a home printer for the price of paper.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🏫 &lt;strong&gt;Classroom wall chart&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;A big periodic table, map or number line without a plotter.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🗺️ &lt;strong&gt;Large map for planning&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;A trek route or site plan at a size you can actually annotate.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🎸 &lt;strong&gt;Band / film poster&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Enlarge artwork for a room without a print shop.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📐 &lt;strong&gt;Full-size templates&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Woodworking, sewing or CNC patterns printed 1:1 across pages.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🖼️ &lt;strong&gt;Multi-panel wall art&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Deliberately visible panel gaps, mounted as a triptych.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  📖 Print it properly — five steps
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1.  Open   →  tooladda.online/poster-printer.html
2.  Drop   →  your highest-resolution image (check the DPI table above)
3.  Set    →  target poster size, paper size, overlap mode
4.  Review →  the page count and grid preview
5.  Print  →  PDF at 100% scale — NOT "Fit to page"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;▶ Start tiling — tooladda.online/poster-printer.html&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ Warning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The one setting that ruins everything: printing with &lt;strong&gt;"Fit to page" / "Shrink to fit" enabled&lt;/strong&gt;. Your printer will scale each tile by a percent or two and no two edges will ever line up. Set scale to &lt;strong&gt;100% / Actual size&lt;/strong&gt; in the print dialog every single time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💡 Tip&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Print one tile first as a test. One wasted sheet is cheaper than discovering the scaling problem on sheet 16.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  ❓ FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is it free? Watermark?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Free, no watermark, no page limit, no signup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My poster came out blurry. Why?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The source image didn't have enough pixels for the size you asked for. Use the DPI table above: at 150 DPI a 1-metre poster needs roughly 5,900 pixels across. No amount of software can invent detail that was never captured.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why don't my tiles line up?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Almost always "Fit to page" in the print dialog. Set scale to 100%. If they still drift, your printer's margins differ from the assumed value — increase the overlap slightly to absorb it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overlap or trim marks — which should I pick?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Overlap if this is your first tiled poster; it hides small alignment errors. Trim marks if you want invisible seams and are comfortable cutting straight.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I print on A3?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. A3 roughly halves the page count versus A4 for the same poster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is my image uploaded?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. It's read locally and sliced on a canvas in your browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I join the tiles neatly?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Work left to right, top row first. In overlap mode, glue the overlap of the right-hand tile under the left one so the seam faces away from the viewing direction — it catches far less light that way.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔬 Under the hood
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Canvas-based slicing in vanilla JavaScript — no server round-trip, no framework.&lt;/li&gt;
&lt;li&gt;Grid maths accounts for printable area and overlap, so the page count you see is the page count you print.&lt;/li&gt;
&lt;li&gt;Multi-page PDF assembled client-side at your chosen paper size.&lt;/li&gt;
&lt;li&gt;Offline-capable PWA with a service worker.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://tooladda.online/poster-printer.html" rel="noopener noreferrer"&gt;ToolAdda&lt;/a&gt;, where Poster Printer runs free in your browser — nothing is uploaded, nothing leaves your device.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>privacy</category>
      <category>webdev</category>
      <category>tools</category>
    </item>
    <item>
      <title>🧮 Scientific Calculator: DEG · RAD · GRAD, memory keys, and a tape you can edit</title>
      <dc:creator>Tomaz</dc:creator>
      <pubDate>Sat, 22 Aug 2026 05:00:10 +0000</pubDate>
      <link>https://dev.to/tomaz_8a7b374c4dc1136233b/scientific-calculator-deg-rad-grad-memory-keys-and-a-tape-you-can-edit-k55</link>
      <guid>https://dev.to/tomaz_8a7b374c4dc1136233b/scientific-calculator-deg-rad-grad-memory-keys-and-a-tape-you-can-edit-k55</guid>
      <description>&lt;h2&gt;
  
  
  ⚡ 10-second version
&lt;/h2&gt;

&lt;p&gt;A calculator that doesn't lose your work. Every entry lands on an &lt;strong&gt;editable tape&lt;/strong&gt; at &lt;strong&gt;&lt;a href="https://tooladda.online/scientific-calculator.html" rel="noopener noreferrer"&gt;tooladda.online/scientific-calculator.html&lt;/a&gt;&lt;/strong&gt; — so when you mistype step four of a nine-step calculation, you fix step four instead of starting again.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;❗ Important&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Install it once and it works with the network off. On a phone in an exam hall, on a plane, or in a lab with no Wi-Fi, a calculator that needs a connection is not a calculator.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  ⚠️ The two mistakes that ruin real answers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Wrong angle mode — the silent wrong answer
&lt;/h3&gt;

&lt;p&gt;This is the single most common source of "the calculator is broken". It isn't; it's in radians when you meant degrees.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;You type&lt;/th&gt;
&lt;th&gt;In &lt;strong&gt;DEG&lt;/strong&gt;
&lt;/th&gt;
&lt;th&gt;In &lt;strong&gt;RAD&lt;/strong&gt;
&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;sin(30)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;0.5&lt;/code&gt; ✅&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;-0.988031624...&lt;/code&gt; ❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tan(90)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;error / ∞&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-1.9952...&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Both answers are &lt;em&gt;correct arithmetic&lt;/em&gt;. Only one answers your question. The current mode is shown permanently in the display here, because a mode indicator you have to go looking for is a mode indicator you'll forget.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Floating-point reality
&lt;/h3&gt;

&lt;p&gt;Every calculator on every computer stores numbers in binary IEEE 754 doubles, and some decimals simply don't exist in binary:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0.1 + 0.2        →  0.30000000000000004
0.3 − 0.1        →  0.19999999999999998
sin(π)           →  1.2246467991473532e-16     (not exactly 0)
tan(89.9999°)    →  572957.795...              (blowing up toward ∞)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is not a bug in this tool — it's how binary floating point works, everywhere, including Excel and your phone. Knowing it means you stop chasing a &lt;code&gt;4&lt;/code&gt; in the seventeenth decimal place and start rounding at the precision your problem actually has.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧭 How the tape changes things
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmermaid.ink%2Fimg%2FeyJjb2RlIjoiZmxvd2NoYXJ0IExSXG4gICAgQVtcIuKMqO-4jyBLZXlzIG9yPGJyLz5rZXlib2FyZCBpbnB1dFwiXSAtLT4gQltcIkV4cHJlc3Npb24gcGFyc2VyXCJdXG4gICAgQiAtLT4gQ1tcIkFuZ2xlIG1vZGU8YnIvPkRFRyDCtyBSQUQgwrcgR1JBRFwiXVxuICAgIEMgLS0-IERbXCJFdmFsdWF0ZVwiXVxuICAgIEQgLS0-IEVbXCLwn5OcIFRhcGUgZW50cnk8YnIvPihlZGl0YWJsZSlcIl1cbiAgICBFIC0tPnxcImZpeCBhIHN0ZXBcInwgQlxuICAgIEUgLS0-IEZbXCJNZW1vcnk8YnIvPk0rIE3iiJIgTVIgTUNcIl1cbiAgICBFIC0tPiBHW1wi8J-TiyBDb3B5IC8gZXhwb3J0XCJdXG5cbiAgICBzdHlsZSBBIGZpbGw6IzBlYTVlOSxzdHJva2U6IzAzNjlhMSxjb2xvcjojZmZmXG4gICAgc3R5bGUgQyBmaWxsOiNmNTllMGIsc3Ryb2tlOiNiNDUzMDksY29sb3I6I2ZmZlxuICAgIHN0eWxlIEUgZmlsbDojMDc1OTg1LHN0cm9rZTojMGM0YTZlLGNvbG9yOiNmZmZcbiAgICBzdHlsZSBHIGZpbGw6IzIyYzU1ZSxzdHJva2U6IzE1ODAzZCxjb2xvcjojZmZmIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRhcmsifX0%3Ftype%3Dpng" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmermaid.ink%2Fimg%2FeyJjb2RlIjoiZmxvd2NoYXJ0IExSXG4gICAgQVtcIuKMqO-4jyBLZXlzIG9yPGJyLz5rZXlib2FyZCBpbnB1dFwiXSAtLT4gQltcIkV4cHJlc3Npb24gcGFyc2VyXCJdXG4gICAgQiAtLT4gQ1tcIkFuZ2xlIG1vZGU8YnIvPkRFRyDCtyBSQUQgwrcgR1JBRFwiXVxuICAgIEMgLS0-IERbXCJFdmFsdWF0ZVwiXVxuICAgIEQgLS0-IEVbXCLwn5OcIFRhcGUgZW50cnk8YnIvPihlZGl0YWJsZSlcIl1cbiAgICBFIC0tPnxcImZpeCBhIHN0ZXBcInwgQlxuICAgIEUgLS0-IEZbXCJNZW1vcnk8YnIvPk0rIE3iiJIgTVIgTUNcIl1cbiAgICBFIC0tPiBHW1wi8J-TiyBDb3B5IC8gZXhwb3J0XCJdXG5cbiAgICBzdHlsZSBBIGZpbGw6IzBlYTVlOSxzdHJva2U6IzAzNjlhMSxjb2xvcjojZmZmXG4gICAgc3R5bGUgQyBmaWxsOiNmNTllMGIsc3Ryb2tlOiNiNDUzMDksY29sb3I6I2ZmZlxuICAgIHN0eWxlIEUgZmlsbDojMDc1OTg1LHN0cm9rZTojMGM0YTZlLGNvbG9yOiNmZmZcbiAgICBzdHlsZSBHIGZpbGw6IzIyYzU1ZSxzdHJva2U6IzE1ODAzZCxjb2xvcjojZmZmIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRhcmsifX0%3Ftype%3Dpng" alt="Diagram" width="1346" height="198"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That loop back from the tape into the parser is the feature. A normal calculator has no way to draw that arrow.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✨ What's inside
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="50%"&gt;

### 📜 Editable calculation tape
Every step is kept and every step is editable. Correct one line and everything downstream recomputes — the way a spreadsheet behaves, in a calculator's form factor.

&lt;/td&gt;
&lt;td width="50%"&gt;

### 📐 Full function set
`sin` `cos` `tan` and inverses, `log` `ln` `exp`, powers, roots, `n!`, `nCr` / `nPr`, π and e, reciprocals, percentages.

&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="50%"&gt;

### 🎚️ DEG / RAD / GRAD
Always visible, one tap to switch. GRAD included for surveying and some engineering coursework where 400 gradians to a turn is still standard.

&lt;/td&gt;
&lt;td width="50%"&gt;

### 🧠 Memory keys
`M+` `M−` `MR` `MC` behaving the way a physical scientific calculator behaves — no relearning.

&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="50%"&gt;

### ⌨️ Real keyboard support
Type expressions with the number row and operators. On a laptop, typing beats clicking buttons with a mouse every time.

&lt;/td&gt;
&lt;td width="50%"&gt;

### ✈️ Installable PWA
Add to home screen, open with no connection. No ads, no popups, no cookie banner between you and an answer.

&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🛠️ Who reaches for it
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Situation&lt;/th&gt;
&lt;th&gt;Why this one&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🎓 &lt;strong&gt;Students doing physics or maths homework&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;The tape shows your working — which is half the marks.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🏗️ &lt;strong&gt;Engineers checking a quick figure&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;DEG/RAD/GRAD without hunting through a settings menu.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🧪 &lt;strong&gt;Lab work&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Offline on a bench machine with no internet access.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;💰 &lt;strong&gt;Anyone doing multi-step money maths&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Fix an early step without re-entering eight numbers.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📱 &lt;strong&gt;Phone users who don't want another app&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Install the page instead of installing an APK full of ads.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🧑‍🏫 &lt;strong&gt;Teachers demonstrating on a projector&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Large, readable display and visible history for the class to follow.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  📖 Getting the most out of it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1.  Open    →  tooladda.online/scientific-calculator.html
2.  Check   →  the angle mode indicator BEFORE any trig
3.  Type    →  use the keyboard, not the mouse
4.  Edit    →  click a tape line to correct it, don't restart
5.  Install →  browser menu → Install / Add to Home Screen (for offline)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;▶ Open it now — tooladda.online/scientific-calculator.html&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💡 Tip&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Round at the end, not at every step. Rounding intermediate values is how a chain of correct operations produces a visibly wrong final answer — and the editable tape lets you keep full precision until the last line.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  ❓ FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is it free and ad-free?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Free, and no interstitial ads or popups. No signup either.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does 0.1 + 0.2 not give exactly 0.3?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Binary floating point can't represent 0.1 or 0.2 exactly, so the sum lands a hair above 0.3. Every mainstream calculator and spreadsheet has this property; some hide it by rounding the display. Knowing about it is more useful than hiding it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is sin(π) not zero?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because π itself is stored as a finite approximation, so you're taking the sine of &lt;em&gt;almost&lt;/em&gt; π. The result is about 1.22 × 10⁻¹⁶ — mathematically zero for any practical purpose.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is GRAD and do I need it?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Gradians: 400 to a full turn instead of 360 degrees. It shows up in surveying and some European engineering syllabi. If you've never needed it, you don't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does it work offline?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. Install it as a PWA and it opens and computes with no connection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I use my keyboard?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes — digits, operators, parentheses, Enter to evaluate, Escape to clear.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I copy the whole calculation out?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes, the tape can be copied — useful for pasting your working into homework or a report.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔬 Under the hood
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Vanilla JavaScript expression parser — no &lt;code&gt;eval()&lt;/code&gt;, so a pasted expression can't execute code.&lt;/li&gt;
&lt;li&gt;IEEE 754 doubles, like every other software calculator; display precision is handled separately from stored precision.&lt;/li&gt;
&lt;li&gt;Service worker + web manifest for genuine offline use.&lt;/li&gt;
&lt;li&gt;Covered by unit tests, because a calculator that's occasionally wrong is worse than no calculator.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://tooladda.online/scientific-calculator.html" rel="noopener noreferrer"&gt;ToolAdda&lt;/a&gt;, where Scientific Calculator runs free in your browser — nothing is uploaded, nothing leaves your device.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>finance</category>
      <category>privacy</category>
      <category>webdev</category>
      <category>tools</category>
    </item>
    <item>
      <title>✍️ Text to Handwriting: Typed text realistic handwriting on real ruled paper</title>
      <dc:creator>Tomaz</dc:creator>
      <pubDate>Fri, 21 Aug 2026 05:05:28 +0000</pubDate>
      <link>https://dev.to/tomaz_8a7b374c4dc1136233b/text-to-handwriting-typed-text-realistic-handwriting-on-real-ruled-paper-1718</link>
      <guid>https://dev.to/tomaz_8a7b374c4dc1136233b/text-to-handwriting-typed-text-realistic-handwriting-on-real-ruled-paper-1718</guid>
      <description>&lt;h2&gt;
  
  
  ⚡ 10-second version
&lt;/h2&gt;

&lt;p&gt;Paste your text at &lt;strong&gt;&lt;a href="https://tooladda.online/text-to-handwriting.html" rel="noopener noreferrer"&gt;tooladda.online/text-to-handwriting.html&lt;/a&gt;&lt;/strong&gt;, choose one of 12 hands, pick ruled or plain paper, and export a multi-page PDF. No watermark stamped across page 3, no signup wall at page 10.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;❗ Important&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The text stays in your browser. Nothing about what you wrote — notes, a letter, an assignment, a journal entry — is uploaded, logged, or read by anyone.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🔬 Why most "handwriting" converters look obviously fake
&lt;/h2&gt;

&lt;p&gt;Swapping in a cursive font is not handwriting. A font repeats the &lt;em&gt;same&lt;/em&gt; glyph at the &lt;em&gt;same&lt;/em&gt; baseline with the &lt;em&gt;same&lt;/em&gt; spacing forever, and your eye catches that pattern in about half a second. Real handwriting is irregular in four specific ways:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Realism lever&lt;/th&gt;
&lt;th&gt;What real hands do&lt;/th&gt;
&lt;th&gt;What a plain cursive font does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Baseline drift&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Lines wobble up and down by a millimetre or two, and slowly climb or sink across the page&lt;/td&gt;
&lt;td&gt;Dead-flat, ruler-straight&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Letter spacing jitter&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Gaps vary word to word; letters occasionally collide&lt;/td&gt;
&lt;td&gt;Metrically perfect, identical every time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Slant variation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Slant shifts as your wrist tires and your hand travels&lt;/td&gt;
&lt;td&gt;One fixed angle for 2,000 words&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ink weight&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pressure changes; strokes darken and thin&lt;/td&gt;
&lt;td&gt;Uniform opacity from first letter to last&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This tool perturbs those four properties per character instead of laying out a font. That's the whole difference between "someone wrote this" and "someone downloaded a font".&lt;/p&gt;




&lt;h2&gt;
  
  
  🧭 How it works
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmermaid.ink%2Fimg%2FeyJjb2RlIjoiZmxvd2NoYXJ0IExSXG4gICAgQVtcIuKMqO-4jyBZb3VyIHR5cGVkIHRleHRcIl0gLS0-IEJ7XCJZb3VyIGJyb3dzZXJcIn1cbiAgICBCIC0tPiBDW1wiUGljayBhIGhhbmQ8YnIvPjEgb2YgMTIgc3R5bGVzXCJdXG4gICAgQyAtLT4gRFtcIlBlci1jaGFyYWN0ZXIgaml0dGVyPGJyLz5iYXNlbGluZSDCtyBzbGFudCDCtyBzcGFjaW5nIMK3IGlua1wiXVxuICAgIEQgLS0-IEVbXCJMYXlvdXQgb250byBwYXBlcjxici8-cnVsZWQgwrcgcGxhaW4gwrcgbWFyZ2luIGxpbmVcIl1cbiAgICBFIC0tPiBGW1wi8J-ThCBNdWx0aS1wYWdlIFBERjxici8-b3IgUE5HXCJdXG4gICAgQiAtLi0-fFwi8J-aqyBubyB1cGxvYWRcInwgWCgoXCJTZXJ2ZXJcIikpXG5cbiAgICBzdHlsZSBBIGZpbGw6IzBlYTVlOSxzdHJva2U6IzAzNjlhMSxjb2xvcjojZmZmXG4gICAgc3R5bGUgQiBmaWxsOiMzMTJlODEsc3Ryb2tlOiMxZTFiNGIsY29sb3I6I2ZmZlxuICAgIHN0eWxlIEQgZmlsbDojODE4Y2Y4LHN0cm9rZTojNGY0NmU1LGNvbG9yOiNmZmZcbiAgICBzdHlsZSBGIGZpbGw6IzIyYzU1ZSxzdHJva2U6IzE1ODAzZCxjb2xvcjojZmZmXG4gICAgc3R5bGUgWCBmaWxsOiMzZjNmNDYsc3Ryb2tlOiM3MTcxN2EsY29sb3I6I2ZmZixzdHJva2UtZGFzaGFycmF5OiA1IDUiLCJtZXJtYWlkIjp7InRoZW1lIjoiZGFyayJ9fQ%3Ftype%3Dpng" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmermaid.ink%2Fimg%2FeyJjb2RlIjoiZmxvd2NoYXJ0IExSXG4gICAgQVtcIuKMqO-4jyBZb3VyIHR5cGVkIHRleHRcIl0gLS0-IEJ7XCJZb3VyIGJyb3dzZXJcIn1cbiAgICBCIC0tPiBDW1wiUGljayBhIGhhbmQ8YnIvPjEgb2YgMTIgc3R5bGVzXCJdXG4gICAgQyAtLT4gRFtcIlBlci1jaGFyYWN0ZXIgaml0dGVyPGJyLz5iYXNlbGluZSDCtyBzbGFudCDCtyBzcGFjaW5nIMK3IGlua1wiXVxuICAgIEQgLS0-IEVbXCJMYXlvdXQgb250byBwYXBlcjxici8-cnVsZWQgwrcgcGxhaW4gwrcgbWFyZ2luIGxpbmVcIl1cbiAgICBFIC0tPiBGW1wi8J-ThCBNdWx0aS1wYWdlIFBERjxici8-b3IgUE5HXCJdXG4gICAgQiAtLi0-fFwi8J-aqyBubyB1cGxvYWRcInwgWCgoXCJTZXJ2ZXJcIikpXG5cbiAgICBzdHlsZSBBIGZpbGw6IzBlYTVlOSxzdHJva2U6IzAzNjlhMSxjb2xvcjojZmZmXG4gICAgc3R5bGUgQiBmaWxsOiMzMTJlODEsc3Ryb2tlOiMxZTFiNGIsY29sb3I6I2ZmZlxuICAgIHN0eWxlIEQgZmlsbDojODE4Y2Y4LHN0cm9rZTojNGY0NmU1LGNvbG9yOiNmZmZcbiAgICBzdHlsZSBGIGZpbGw6IzIyYzU1ZSxzdHJva2U6IzE1ODAzZCxjb2xvcjojZmZmXG4gICAgc3R5bGUgWCBmaWxsOiMzZjNmNDYsc3Ryb2tlOiM3MTcxN2EsY29sb3I6I2ZmZixzdHJva2UtZGFzaGFycmF5OiA1IDUiLCJtZXJtYWlkIjp7InRoZW1lIjoiZGFyayJ9fQ%3Ftype%3Dpng" alt="Diagram" width="1543" height="218"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ✨ What's inside
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="50%"&gt;

### 🖋️ 12 distinct hands
Neat print, hurried scrawl, looping cursive, tight engineering lettering. Different documents need different hands — a lab record shouldn't look like a love letter.

&lt;/td&gt;
&lt;td width="50%"&gt;

### 📓 Real paper backgrounds
Ruled lines, margin rule, plain, grid. The paper is drawn behind the text at the right line pitch, so writing sits **on** the rule instead of floating near it.

&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="50%"&gt;

### 📄 Multi-page PDF
Long text flows across pages automatically with consistent margins — not one giant scrolling image you then have to slice up yourself.

&lt;/td&gt;
&lt;td width="50%"&gt;

### 🌐 Many scripts
Latin plus Indic scripts, so this works for more than English coursework.

&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="50%"&gt;

### 🎨 Ink and pen control
Blue, black, or blue-black; nib weight and letter size adjustable. Matching your actual pen is what makes a printed page read as handwritten.

&lt;/td&gt;
&lt;td width="50%"&gt;

### 🚫 No watermark, no signup
Export as many pages as you like. Nothing is stamped across your output and nothing is gated.

&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🛠️ What people genuinely use it for
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Situation&lt;/th&gt;
&lt;th&gt;Why the tool helps&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;📚 &lt;strong&gt;Handwritten notes to study from&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Reading your own material in a handwritten face is easier to revise from than a typed wall of text.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🎨 &lt;strong&gt;Invitations and cards&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;A handwritten-looking insert without hand-writing sixty of them.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🖼️ &lt;strong&gt;Mockups and design comps&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Realistic handwriting inside a UI mockup, journal template or product shot.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✒️ &lt;strong&gt;Practising a letterform&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Print a page in a hand you're trying to learn and trace it.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🎬 &lt;strong&gt;Props for video and print&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;A "found note" or diary page for a film, a game, or an escape-room puzzle.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;♿ &lt;strong&gt;When writing by hand hurts&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;For people with an injury, tremor or chronic pain, this produces handwritten-style pages without the pain.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ Warning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If an assignment is set as handwritten, the point is usually that &lt;strong&gt;you&lt;/strong&gt; write it — submitting generated pages as your own handwriting is academic dishonesty at most institutions, and printed output rarely survives close inspection anyway. Use it for your own notes, for design work, and for the accessibility case above.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  📖 Four steps to a page
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1.  Open   →  tooladda.online/text-to-handwriting.html
2.  Paste  →  your text
3.  Style  →  hand, paper, ink colour, size
4.  Export →  multi-page PDF (or PNG per page)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;▶ Open the converter — tooladda.online/text-to-handwriting.html&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💡 Tip&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Print on slightly off-white paper, not bright white — and if you're going for realism, print at a &lt;strong&gt;slight&lt;/strong&gt; angle rather than perfectly square. Machine-perfect page alignment is the giveaway that survives even a good hand.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  ❓ FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is it free? Any watermark or page limit?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Free, no watermark, no page limit, no signup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I use my own handwriting?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The tool ships 12 built-in hands. Reproducing your exact handwriting needs a trained font built from your own samples — a separate, much heavier process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does it work for Hindi and other Indic scripts?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes, several non-Latin scripts are supported. Conjunct-heavy scripts render best at a slightly larger size.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Will it look real when printed?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Convincing at a glance and in a photograph. Under direct inspection, printer toner sits on the paper differently from ink from a pen — there's no software fix for that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is my text uploaded anywhere?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. Rendering happens on a canvas in your browser. Open the Network tab while you convert and you'll see your text going nowhere.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I get one image per page instead of a PDF?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes — PNG export per page, which is what you want for mockups and social posts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does very long text take a moment?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every character is drawn individually with its own jitter values. That per-character work is exactly what stops the output looking like a font, and it costs a little time on long documents.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔬 Under the hood
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;HTML5 &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; rendering, vanilla JavaScript, no framework and no build step.&lt;/li&gt;
&lt;li&gt;Jitter is applied per glyph across baseline offset, slant, tracking and opacity.&lt;/li&gt;
&lt;li&gt;Paper is drawn as a real layer at a correct line pitch, so text aligns to the rule.&lt;/li&gt;
&lt;li&gt;PDF assembled client-side; PWA-installable and offline-capable.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://tooladda.online/text-to-handwriting.html" rel="noopener noreferrer"&gt;ToolAdda&lt;/a&gt;, where Text to Handwriting runs free in your browser — nothing is uploaded, nothing leaves your device.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>tools</category>
    </item>
    <item>
      <title>🧾 Salary Slip Generator: Payslips with PF, ESI and professional tax worked out for you</title>
      <dc:creator>Tomaz</dc:creator>
      <pubDate>Thu, 20 Aug 2026 05:04:54 +0000</pubDate>
      <link>https://dev.to/tomaz_8a7b374c4dc1136233b/salary-slip-generator-payslips-with-pf-esi-and-professional-tax-worked-out-for-you-8d3</link>
      <guid>https://dev.to/tomaz_8a7b374c4dc1136233b/salary-slip-generator-payslips-with-pf-esi-and-professional-tax-worked-out-for-you-8d3</guid>
      <description>&lt;h2&gt;
  
  
  ⚡ 10-second version
&lt;/h2&gt;

&lt;p&gt;A payslip is not a pretty table — it's arithmetic that has to &lt;em&gt;add up&lt;/em&gt;. Enter the earnings once at &lt;strong&gt;&lt;a href="https://tooladda.online/salary-slip-generator.html" rel="noopener noreferrer"&gt;tooladda.online/salary-slip-generator.html&lt;/a&gt;&lt;/strong&gt; and the deductions side fills itself in: PF on the right wage base, ESI only if the employee is eligible, professional tax from the state slab. Gross − deductions = net, every time.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;❗ Important&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Payslips contain names, employee IDs, bank details and exact salaries. This tool runs &lt;strong&gt;entirely in your browser&lt;/strong&gt; — there is no upload, no account, and no server holding a spreadsheet of your team's pay.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  💰 Where the money actually goes
&lt;/h2&gt;

&lt;p&gt;The number that surprises every first-time employee is the gap between CTC and bank credit. Here's the mechanism, with the statutory bases that most templates get wrong:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;How it's computed&lt;/th&gt;
&lt;th&gt;The detail people miss&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;EPF (employee)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;12% of PF wages&lt;/td&gt;
&lt;td&gt;The statutory wage ceiling is &lt;strong&gt;₹15,000/month&lt;/strong&gt;. Above it, employers may cap the contribution at ₹1,800 or contribute on full basic — both are legal, and they produce very different payslips.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;EPF (employer)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;12%, split 8.33% pension + 3.67% PF&lt;/td&gt;
&lt;td&gt;This is employer cost, not an employee deduction. It belongs in CTC, &lt;strong&gt;not&lt;/strong&gt; in the deductions column.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ESI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.75% employee + 3.25% employer&lt;/td&gt;
&lt;td&gt;Applies only while gross wages are &lt;strong&gt;≤ ₹21,000/month&lt;/strong&gt;. Cross the limit mid-contribution-period and the rules still keep the employee in until the period ends.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Professional tax&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Flat state slab&lt;/td&gt;
&lt;td&gt;State-specific, not national. Maharashtra runs ~₹200/month with a higher February figure; several states don't levy it at all.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TDS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Per the employee's regime &amp;amp; declarations&lt;/td&gt;
&lt;td&gt;Depends on old vs new regime and declared investments — no template can guess it.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;The classic mistake:&lt;/strong&gt; putting the &lt;em&gt;employer's&lt;/em&gt; 12% PF into the employee's deductions. That single error understates net pay by thousands and makes the slip fail any audit.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧭 How it works
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmermaid.ink%2Fimg%2FeyJjb2RlIjoiZmxvd2NoYXJ0IExSXG4gICAgQVtcIvCfj6IgQ29tcGFueSArPGJyLz7wn5GkIGVtcGxveWVlIGRldGFpbHNcIl0gLS0-IEJ7XCJZb3VyIGJyb3dzZXJcIn1cbiAgICBDW1wi8J-StSBFYXJuaW5nczxici8-YmFzaWMgwrcgSFJBIMK3IGFsbG93YW5jZXNcIl0gLS0-IEJcbiAgICBCIC0tPiBEW1wiU3RhdHV0b3J5IGVuZ2luZTxici8-RVBGIMK3IEVTSSDCtyBQVFwiXVxuICAgIEQgLS0-IEVbXCJHcm9zcyDiiJIgRGVkdWN0aW9uczxici8-PSBOZXQgcGF5XCJdXG4gICAgRSAtLT4gRltcIvCflKIgQW1vdW50IGluIHdvcmRzXCJdXG4gICAgRiAtLT4gR1tcIvCfk4QgUHJpbnQtcmVhZHkgUERGXCJdXG4gICAgQiAtLi0-fFwi8J-aqyBub3RoaW5nIHVwbG9hZGVkXCJ8IFgoKFwiU2VydmVyXCIpKVxuXG4gICAgc3R5bGUgQSBmaWxsOiMwZWE1ZTksc3Ryb2tlOiMwMzY5YTEsY29sb3I6I2ZmZlxuICAgIHN0eWxlIEMgZmlsbDojMGVhNWU5LHN0cm9rZTojMDM2OWExLGNvbG9yOiNmZmZcbiAgICBzdHlsZSBCIGZpbGw6Izc4MzUwZixzdHJva2U6IzQ1MWEwMyxjb2xvcjojZmZmXG4gICAgc3R5bGUgRCBmaWxsOiNmNTllMGIsc3Ryb2tlOiNiNDUzMDksY29sb3I6I2ZmZlxuICAgIHN0eWxlIEcgZmlsbDojMjJjNTVlLHN0cm9rZTojMTU4MDNkLGNvbG9yOiNmZmZcbiAgICBzdHlsZSBYIGZpbGw6IzNmM2Y0NixzdHJva2U6IzcxNzE3YSxjb2xvcjojZmZmLHN0cm9rZS1kYXNoYXJyYXk6IDUgNSIsIm1lcm1haWQiOnsidGhlbWUiOiJkYXJrIn19%3Ftype%3Dpng" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmermaid.ink%2Fimg%2FeyJjb2RlIjoiZmxvd2NoYXJ0IExSXG4gICAgQVtcIvCfj6IgQ29tcGFueSArPGJyLz7wn5GkIGVtcGxveWVlIGRldGFpbHNcIl0gLS0-IEJ7XCJZb3VyIGJyb3dzZXJcIn1cbiAgICBDW1wi8J-StSBFYXJuaW5nczxici8-YmFzaWMgwrcgSFJBIMK3IGFsbG93YW5jZXNcIl0gLS0-IEJcbiAgICBCIC0tPiBEW1wiU3RhdHV0b3J5IGVuZ2luZTxici8-RVBGIMK3IEVTSSDCtyBQVFwiXVxuICAgIEQgLS0-IEVbXCJHcm9zcyDiiJIgRGVkdWN0aW9uczxici8-PSBOZXQgcGF5XCJdXG4gICAgRSAtLT4gRltcIvCflKIgQW1vdW50IGluIHdvcmRzXCJdXG4gICAgRiAtLT4gR1tcIvCfk4QgUHJpbnQtcmVhZHkgUERGXCJdXG4gICAgQiAtLi0-fFwi8J-aqyBub3RoaW5nIHVwbG9hZGVkXCJ8IFgoKFwiU2VydmVyXCIpKVxuXG4gICAgc3R5bGUgQSBmaWxsOiMwZWE1ZTksc3Ryb2tlOiMwMzY5YTEsY29sb3I6I2ZmZlxuICAgIHN0eWxlIEMgZmlsbDojMGVhNWU5LHN0cm9rZTojMDM2OWExLGNvbG9yOiNmZmZcbiAgICBzdHlsZSBCIGZpbGw6Izc4MzUwZixzdHJva2U6IzQ1MWEwMyxjb2xvcjojZmZmXG4gICAgc3R5bGUgRCBmaWxsOiNmNTllMGIsc3Ryb2tlOiNiNDUzMDksY29sb3I6I2ZmZlxuICAgIHN0eWxlIEcgZmlsbDojMjJjNTVlLHN0cm9rZTojMTU4MDNkLGNvbG9yOiNmZmZcbiAgICBzdHlsZSBYIGZpbGw6IzNmM2Y0NixzdHJva2U6IzcxNzE3YSxjb2xvcjojZmZmLHN0cm9rZS1kYXNoYXJyYXk6IDUgNSIsIm1lcm1haWQiOnsidGhlbWUiOiJkYXJrIn19%3Ftype%3Dpng" alt="Diagram" width="1576" height="222"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ✨ What's inside
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="50%"&gt;

### ⚙️ Statutory auto-calculation
PF, ESI and PT computed from the bases you set — with the wage ceilings applied, not ignored. Override any figure when your company's policy differs.

&lt;/td&gt;
&lt;td width="50%"&gt;

### 🧩 Custom earnings &amp;amp; deductions
Add conveyance, LTA, special allowance, loan recovery, advance adjustment. Real payrolls have odd lines; the form doesn't fight you.

&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="50%"&gt;

### 🔢 Amount in words
Auto-generated in the Indian numbering system — lakh and crore, not million. Small thing, but it's the line auditors read first.

&lt;/td&gt;
&lt;td width="50%"&gt;

### 🏢 Company branding
Logo, address, and a clean layout that looks like it came from an HR system rather than a Word file someone forwarded.

&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="50%"&gt;

### 📄 Real-text PDF
Selectable, searchable text — so a bank or landlord verifying the slip can copy from it. Not a screenshot pretending to be a document.

&lt;/td&gt;
&lt;td width="50%"&gt;

### 🔒 No account, no retention
Nothing is stored. For a small business without payroll software, this is the difference between issuing slips and uploading your team's salaries to a stranger.

&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🛠️ Who uses it
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Situation&lt;/th&gt;
&lt;th&gt;What they do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🏪 &lt;strong&gt;Small business, 5–40 staff&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Issue proper monthly slips without paying for payroll software.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🧑‍💼 &lt;strong&gt;HR at a startup&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Bridge the gap before a payroll product is set up.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🏦 &lt;strong&gt;Employee applying for a loan&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Reissue a lost slip the bank is asking for.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🛂 &lt;strong&gt;Visa or rental application&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Produce the three months of slips that get requested every time.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🧾 &lt;strong&gt;CA / consultant&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Generate slips for multiple client employees quickly.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🏠 &lt;strong&gt;Household or shop employer&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Give a domestic or retail employee a real, documented payslip.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  📖 Four steps to a signed slip
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1.  Open     →  tooladda.online/salary-slip-generator.html
2.  Company  →  name, address, logo, pay month
3.  Earnings →  basic + HRA + allowances (deductions fill in automatically)
4.  Download →  PDF, check gross − deductions = net, issue
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;▶ Open the generator — tooladda.online/salary-slip-generator.html&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ Warning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Statutory rates, wage ceilings and state PT slabs &lt;strong&gt;change&lt;/strong&gt;. Treat the defaults as a sensible starting point, not legal advice, and confirm current figures with your CA or the EPFO/ESIC notifications before you file anything on the back of them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💡 Tip&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Keep one slip as your reference template and reuse the same structure every month. Payslips whose component names drift month to month are the ones that get questioned during due diligence.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  ❓ FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is it free, and is there a watermark?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Free, and no watermark. No per-slip charge and no cap on how many employees you generate for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is my net pay lower than salary ÷ 12?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because CTC includes the employer's PF contribution, gratuity provision and often insurance — costs your employer pays that never pass through your bank account. Then your own PF, PT and TDS come out of gross. The slip shows each step so the gap stops being mysterious.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Should the employer's PF go in deductions?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. Only the employee's 12% is a deduction. The employer's share is company cost and belongs in the CTC breakup, not the payslip's deduction column. Mixing them is the most common payslip error there is.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is ESI deducted from everyone?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No — it applies while gross wages stay within the ₹21,000/month limit. Above that the employee is outside ESI, though transition rules apply if they cross mid-period.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I override an auto-calculated figure?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. Every statutory line is editable, because real company policies deviate from the defaults — capping PF at ₹1,800 being the obvious example.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I generate slips for a whole team?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes — run through each employee and download their slip. Nothing is stored between them, so nothing leaks between them either.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is a self-generated payslip acceptable to banks?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A payslip issued by an employer is valid regardless of which software produced it — what matters is that it's genuine, signed/stamped, and matches bank credits and Form 16. Fabricating a slip for income you didn't earn is fraud, and the bank statement cross-check is exactly where it comes apart.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔬 Under the hood
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Vanilla JavaScript, single page, &lt;strong&gt;no backend&lt;/strong&gt; — salary data has nowhere to travel to.&lt;/li&gt;
&lt;li&gt;Deduction engine keeps wage ceilings and eligibility limits as editable parameters rather than magic numbers.&lt;/li&gt;
&lt;li&gt;PDF generated client-side with real text; A4 print layout.&lt;/li&gt;
&lt;li&gt;Offline-capable PWA once loaded.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://tooladda.online/salary-slip-generator.html" rel="noopener noreferrer"&gt;ToolAdda&lt;/a&gt;, where Salary Slip Generator runs free in your browser — nothing is uploaded, nothing leaves your device.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>finance</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>tools</category>
    </item>
    <item>
      <title>🏠 Rent Receipt Generator: A full year of HRA receipts in one PDF — any country, any currency</title>
      <dc:creator>Tomaz</dc:creator>
      <pubDate>Wed, 19 Aug 2026 05:02:38 +0000</pubDate>
      <link>https://dev.to/tomaz_8a7b374c4dc1136233b/rent-receipt-generator-a-full-year-of-hra-receipts-in-one-pdf-any-country-any-currency-8gb</link>
      <guid>https://dev.to/tomaz_8a7b374c4dc1136233b/rent-receipt-generator-a-full-year-of-hra-receipts-in-one-pdf-any-country-any-currency-8gb</guid>
      <description>&lt;h2&gt;
  
  
  ⚡ 10-second version
&lt;/h2&gt;

&lt;p&gt;It's March. Payroll wants twelve rent receipts by Friday. Fill the form &lt;strong&gt;once&lt;/strong&gt; at &lt;strong&gt;&lt;a href="https://tooladda.online/rent-receipt-generator.html" rel="noopener noreferrer"&gt;tooladda.online/rent-receipt-generator.html&lt;/a&gt;&lt;/strong&gt;, pick the financial year, and download all twelve — correctly dated, serially numbered, signature-ready — as a single PDF.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;❗ Important&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your landlord's name, address and PAN are typed into a form that runs &lt;strong&gt;inside your own browser&lt;/strong&gt;. There is no account, no database, and no server that ever sees them. That matters more here than in most tools — a rent receipt bundles your salary structure, your home address and someone else's tax ID into one document.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🧮 The HRA rule nobody explains properly
&lt;/h2&gt;

&lt;p&gt;Your HRA exemption is &lt;strong&gt;not&lt;/strong&gt; whatever HRA your employer pays you. It's the &lt;strong&gt;smallest of three numbers&lt;/strong&gt;. Miss this and you'll either over-claim (notice) or under-claim (lost refund).&lt;/p&gt;

&lt;p&gt;Worked example — Basic ₹50,000/month, HRA ₹20,000/month, rent paid ₹18,000/month, metro city:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Rule&lt;/th&gt;
&lt;th&gt;Annual value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;a&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Actual HRA received&lt;/td&gt;
&lt;td&gt;₹2,40,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;b&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Rent paid − 10% of basic salary&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;₹1,56,000&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;c&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;50% of basic (metro) / 40% (non-metro)&lt;/td&gt;
&lt;td&gt;₹3,00,000&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Exempt = the least of the three = ₹1,56,000.&lt;/strong&gt; The remaining ₹84,000 of your HRA is taxable. The tool computes all three lines and shows you which one is binding — so you can see &lt;em&gt;why&lt;/em&gt; your number is what it is instead of trusting a black box.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚠️ Three compliance details that get receipts rejected
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rule&lt;/th&gt;
&lt;th&gt;What it means&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🪪 &lt;strong&gt;Landlord PAN above ₹1,00,000/year rent&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;If annual rent crosses one lakh, your employer needs the landlord's PAN. No PAN → a signed declaration, or the exemption gets disallowed at assessment.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🎟️ &lt;strong&gt;Revenue stamp on cash receipts over ₹5,000&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;A cash receipt above ₹5,000 conventionally carries a revenue stamp signed across it. The tool leaves a marked space for it instead of pretending it doesn't exist.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📅 &lt;strong&gt;Dates inside the right financial year&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Receipts dated April→March, one per month, in sequence. Twelve receipts all dated 31 March is the single most obvious red flag in the file.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ Warning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This tool generates receipts for rent &lt;strong&gt;you actually paid&lt;/strong&gt;. It is not a way to manufacture a paper trail for rent that was never paid — that's tax fraud, and a mismatch between your claim and your landlord's declared income is exactly what the department's data matching is built to find.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🧭 How it works
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmermaid.ink%2Fimg%2FeyJjb2RlIjoiZmxvd2NoYXJ0IExSXG4gICAgQVtcIvCfk50gVGVuYW50IMK3IGxhbmRsb3JkPGJyLz5yZW50IMK3IGFkZHJlc3MgwrcgUEFOXCJdIC0tPiBCe1wiWW91ciBicm93c2VyXCJ9XG4gICAgQiAtLT4gQ1tcIlBpY2sgZmluYW5jaWFsIHllYXI8YnIvPkFwciDihpIgTWFyXCJdXG4gICAgQyAtLT4gRFtcIjEyIHJlY2VpcHRzIGdlbmVyYXRlZDxici8-ZGF0ZWQgJiBudW1iZXJlZFwiXVxuICAgIEIgLS0-IEVbXCJIUkEgY2FsY3VsYXRvcjxici8-bGVhc3Qgb2YgMyBydWxlc1wiXVxuICAgIEQgLS0-IEZbXCLwn5OEIFNpbmdsZSBwcmludC1yZWFkeSBQREZcIl1cbiAgICBFIC0tPiBGXG4gICAgQiAtLi0-fFwi8J-aqyBub3RoaW5nIHVwbG9hZGVkXCJ8IFgoKFwiU2VydmVyXCIpKVxuXG4gICAgc3R5bGUgQSBmaWxsOiMwZWE1ZTksc3Ryb2tlOiMwMzY5YTEsY29sb3I6I2ZmZlxuICAgIHN0eWxlIEIgZmlsbDojMTY2NTM0LHN0cm9rZTojMTQ1MzJkLGNvbG9yOiNmZmZcbiAgICBzdHlsZSBFIGZpbGw6I2Y1OWUwYixzdHJva2U6I2I0NTMwOSxjb2xvcjojZmZmXG4gICAgc3R5bGUgRiBmaWxsOiMyMmM1NWUsc3Ryb2tlOiMxNTgwM2QsY29sb3I6I2ZmZlxuICAgIHN0eWxlIFggZmlsbDojM2YzZjQ2LHN0cm9rZTojNzE3MTdhLGNvbG9yOiNmZmYsc3Ryb2tlLWRhc2hhcnJheTogNSA1IiwibWVybWFpZCI6eyJ0aGVtZSI6ImRhcmsifX0%3Ftype%3Dpng" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmermaid.ink%2Fimg%2FeyJjb2RlIjoiZmxvd2NoYXJ0IExSXG4gICAgQVtcIvCfk50gVGVuYW50IMK3IGxhbmRsb3JkPGJyLz5yZW50IMK3IGFkZHJlc3MgwrcgUEFOXCJdIC0tPiBCe1wiWW91ciBicm93c2VyXCJ9XG4gICAgQiAtLT4gQ1tcIlBpY2sgZmluYW5jaWFsIHllYXI8YnIvPkFwciDihpIgTWFyXCJdXG4gICAgQyAtLT4gRFtcIjEyIHJlY2VpcHRzIGdlbmVyYXRlZDxici8-ZGF0ZWQgJiBudW1iZXJlZFwiXVxuICAgIEIgLS0-IEVbXCJIUkEgY2FsY3VsYXRvcjxici8-bGVhc3Qgb2YgMyBydWxlc1wiXVxuICAgIEQgLS0-IEZbXCLwn5OEIFNpbmdsZSBwcmludC1yZWFkeSBQREZcIl1cbiAgICBFIC0tPiBGXG4gICAgQiAtLi0-fFwi8J-aqyBub3RoaW5nIHVwbG9hZGVkXCJ8IFgoKFwiU2VydmVyXCIpKVxuXG4gICAgc3R5bGUgQSBmaWxsOiMwZWE1ZTksc3Ryb2tlOiMwMzY5YTEsY29sb3I6I2ZmZlxuICAgIHN0eWxlIEIgZmlsbDojMTY2NTM0LHN0cm9rZTojMTQ1MzJkLGNvbG9yOiNmZmZcbiAgICBzdHlsZSBFIGZpbGw6I2Y1OWUwYixzdHJva2U6I2I0NTMwOSxjb2xvcjojZmZmXG4gICAgc3R5bGUgRiBmaWxsOiMyMmM1NWUsc3Ryb2tlOiMxNTgwM2QsY29sb3I6I2ZmZlxuICAgIHN0eWxlIFggZmlsbDojM2YzZjQ2LHN0cm9rZTojNzE3MTdhLGNvbG9yOiNmZmYsc3Ryb2tlLWRhc2hhcnJheTogNSA1IiwibWVybWFpZCI6eyJ0aGVtZSI6ImRhcmsifX0%3Ftype%3Dpng" alt="Diagram" width="1364" height="280"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ✨ What's inside
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="50%"&gt;

### 📆 Bulk 12-month generation
Enter details once. Get twelve receipts, each with its own month, date and serial number, in one PDF — instead of editing a Word template twelve times and mistyping month nine.

&lt;/td&gt;
&lt;td width="50%"&gt;

### 🧮 Built-in HRA calculator
All three exemption rules computed side by side, with the binding one highlighted. You see the arithmetic, not just an answer.

&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="50%"&gt;

### 🌍 Any country, any currency
Not hardcoded to ₹. Pick your currency and the receipts read naturally — useful for anyone claiming a rent allowance outside India.

&lt;/td&gt;
&lt;td width="50%"&gt;

### 🖨️ Print-ready output
Clean A4 layout with room for the signature and revenue stamp. Real text, not a screenshot — so payroll can search and copy from it.

&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="50%"&gt;

### 🔒 Zero data retention
No login, no saved profile, no analytics on your inputs. Close the tab and nothing about your landlord survives anywhere.

&lt;/td&gt;
&lt;td width="50%"&gt;

### ⚡ No watermark, no cap
Twelve receipts or a hundred. No "upgrade to remove watermark", because there is no watermark and no upgrade.

&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🛠️ Who actually uses this
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Situation&lt;/th&gt;
&lt;th&gt;What they do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;💼 &lt;strong&gt;Salaried employee, HRA proof due&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Generate Apr–Mar receipts, get them signed, submit with Form 12BB.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🏘️ &lt;strong&gt;Landlord with several tenants&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Issue clean monthly receipts per tenant without buying accounting software.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🎓 &lt;strong&gt;Students sharing a flat&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Split-rent receipts for a hostel allowance or a scholarship claim.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🧑‍💻 &lt;strong&gt;Freelancer claiming home office rent&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Documented rent for a business-expense deduction.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🌐 &lt;strong&gt;Expat on a housing allowance&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Same receipts, different currency, employer-ready.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🗂️ &lt;strong&gt;Anyone rebuilding lost records&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Reissue receipts for months where the original slip is gone.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  📖 From blank form to PDF in four steps
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1.  Open   →  tooladda.online/rent-receipt-generator.html
2.  Fill   →  tenant, landlord, address, monthly rent, PAN (if rent &amp;gt; ₹1L/yr)
3.  Pick   →  financial year, and turn on bulk 12-month mode
4.  Download → one PDF, print, sign, submit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;▶ Start now — tooladda.online/rent-receipt-generator.html&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💡 Tip&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Generate receipts &lt;strong&gt;monthly, as you pay&lt;/strong&gt;, not in a March panic. Signatures collected through the year look like signatures collected through the year — and you won't be chasing a landlord who moved cities in August.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  ❓ FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is this rent receipt generator really free?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. No signup, no per-receipt charge, no watermark, no paywall on the twelfth receipt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need my landlord's PAN?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If your annual rent exceeds ₹1,00,000, your employer needs it to allow the exemption. Below that it's optional. Where the landlord has no PAN, a signed declaration from them is the usual substitute.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is a rent receipt valid without a revenue stamp?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For cash payments above ₹5,000 the stamp is the convention and some employers insist on it. If you pay by bank transfer, the transfer record is the stronger evidence anyway — and you should keep it either way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I claim HRA for rent paid to a parent?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes, it's legal — but the rent must genuinely be paid, and the parent must declare it as rental income in their return. Paying yourself through a parent's account without them declaring it is the version that fails.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does the tool store my landlord's details?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. Everything is held in the page while you work, and it's gone when you close the tab. There is no account to hold it in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I use this outside India?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes — the receipt format and currency are configurable. The HRA calculator is India-specific, but the receipts themselves work anywhere a landlord needs to acknowledge payment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are the PF/tax slabs and limits current?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Thresholds like the ₹1 lakh PAN rule and the metro/non-metro percentages come from the Income Tax Act and do change. Treat the calculator as a fast working estimate and confirm anything material with your CA or payroll team.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔬 Under the hood
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;One HTML page, vanilla JavaScript, &lt;strong&gt;no backend at all&lt;/strong&gt; — there is no server-side code to trust.&lt;/li&gt;
&lt;li&gt;PDF assembled client-side, with real selectable text rather than a rasterised image.&lt;/li&gt;
&lt;li&gt;Works offline once loaded; installable as a PWA.&lt;/li&gt;
&lt;li&gt;Privacy is structural here, not a policy paragraph: the data never has anywhere to go.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://tooladda.online/rent-receipt-generator.html" rel="noopener noreferrer"&gt;ToolAdda&lt;/a&gt;, where Rent Receipt Generator runs free in your browser — nothing is uploaded, nothing leaves your device.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>finance</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>tools</category>
    </item>
    <item>
      <title>🔐 Hash Generator: MD5 · SHA-1 · SHA-256 · SHA-512 — computed in your browser, never uploaded</title>
      <dc:creator>Tomaz</dc:creator>
      <pubDate>Tue, 18 Aug 2026 23:46:47 +0000</pubDate>
      <link>https://dev.to/tomaz_8a7b374c4dc1136233b/hash-generator-md5-sha-1-sha-256-sha-512-computed-in-your-browser-never-uploaded-1eoc</link>
      <guid>https://dev.to/tomaz_8a7b374c4dc1136233b/hash-generator-md5-sha-1-sha-256-sha-512-computed-in-your-browser-never-uploaded-1eoc</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;🔐 &lt;strong&gt;&lt;a href="https://tooladda.online/hash-generator.html" rel="noopener noreferrer"&gt;Open Hash Generator → tooladda.online/hash-generator.html&lt;/a&gt;&lt;/strong&gt; — free, runs 100% in your browser, no signup, no uploads.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  ⚡ 10-second version
&lt;/h2&gt;

&lt;p&gt;Open &lt;strong&gt;&lt;a href="https://tooladda.online/hash-generator.html" rel="noopener noreferrer"&gt;tooladda.online/hash-generator.html&lt;/a&gt;&lt;/strong&gt;, paste text or drop a file → get &lt;strong&gt;all four digests at once&lt;/strong&gt; → paste the vendor's published checksum into the compare box → green means the file is genuine.&lt;/p&gt;

&lt;p&gt;No account. No upload. No 5 MB limit. Close the tab and the evidence is gone.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;❗ Important&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your bytes never touch a server. The hashing runs inside your own browser tab, which is exactly why it's safe to fingerprint a confidential contract, an internal build artifact, or a client database export.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🎬 See the avalanche effect for yourself
&lt;/h2&gt;

&lt;p&gt;Change &lt;strong&gt;one bit&lt;/strong&gt; — lowercase &lt;code&gt;h&lt;/code&gt; to uppercase &lt;code&gt;H&lt;/code&gt; — and the entire digest is unrecognisable. These are real values, generated with the same algorithms the tool uses:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Input&lt;/th&gt;
&lt;th&gt;SHA-256 digest&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;hello&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Hello&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;125 of the 256 output bits flipped — 48.8%.&lt;/strong&gt; That's the avalanche property working as designed: a good hash function scrambles roughly half the output for any input change, no matter how small. It's what makes a digest useful as a tamper detector.&lt;/p&gt;

&lt;p&gt;📋 The same two inputs across all four algorithms (click to expand)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;hello&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MD5      5d41402abc4b2a76b9719d911017c592
SHA-1    aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
SHA-256  2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
SHA-512  9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72
         323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;Hello&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MD5      8b1a9953c4611296a827abf8c47804d7
SHA-1    f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0
SHA-256  185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
SHA-512  3615f80c9d293ed7402687f94b22d58e529b8cc7916f8fac7fddf7fbd5af4cf77
         7d3d795a7a00a16bf7e7f3fb9561ee9baae480da9fe7a18769e71886b03f315
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Paste &lt;code&gt;hello&lt;/code&gt; into the tool and you should get the top block byte for byte. If you don't, something in your setup is wrong — which is exactly the point of the tool's built-in &lt;strong&gt;Verify the engine&lt;/strong&gt; self-test.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tooladda.online/hash-generator.html" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2F%25F0%259F%2594%2590_Hash_%2522hello%2522_Yourself-0b6e6b%3Fstyle%3Dfor-the-badge" alt="Verify it yourself" width="213" height="28"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🧭 How your bytes flow
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmermaid.ink%2Fimg%2FeyJjb2RlIjoiZmxvd2NoYXJ0IExSXG4gICAgQVtcIvCfk50gVGV4dDxici8-b3Ig8J-TgSBGaWxlXCJdIC0tPiBCe1wiWW91ciBicm93c2VyIHRhYlwifVxuICAgIEIgLS0-IENbXCJSZWFkIGludG8gbWVtb3J5PGJyLz4oRmlsZVJlYWRlcilcIl1cbiAgICBDIC0tPiBEW1wiRGlnZXN0IGVuZ2luZTxici8-TUQ1IMK3IFNIQS0xIMK3IFNIQS0yNTYgwrcgU0hBLTUxMlwiXVxuICAgIEQgLS0-IEVbXCI0IGhleCBkaWdlc3RzPGJyLz5zaG93biBzaWRlIGJ5IHNpZGVcIl1cbiAgICBFIC0tPiBGW1wi8J-UjSBDb21wYXJlIGFnYWluc3Q8YnIvPmV4cGVjdGVkIGNoZWNrc3VtXCJdXG4gICAgRiAtLT4gR3tcIk1hdGNoP1wifVxuICAgIEcgLS0-fFwi4pyFIFllc1wifCBIW1wiRmlsZSBpcyBpbnRhY3RcIl1cbiAgICBHIC0tPnxcIuKdjCBOb1wifCBJW1wiQ29ycnVwdGVkIG9yIHRhbXBlcmVkPGJyLz7igJQgZG8gbm90IHJ1biBpdFwiXVxuICAgIEIgLS4tPnxcIvCfmqsgbm8gcmVxdWVzdCBldmVyIGxlYXZlc1wifCBYKChcIlNlcnZlclwiKSlcblxuICAgIHN0eWxlIEEgZmlsbDojMGVhNWU5LHN0cm9rZTojMDM2OWExLGNvbG9yOiNmZmZcbiAgICBzdHlsZSBCIGZpbGw6IzBiNmU2YixzdHJva2U6IzA2NGU0Yixjb2xvcjojZmZmXG4gICAgc3R5bGUgRCBmaWxsOiM4YjVjZjYsc3Ryb2tlOiM2ZDI4ZDksY29sb3I6I2ZmZlxuICAgIHN0eWxlIEggZmlsbDojMjJjNTVlLHN0cm9rZTojMTU4MDNkLGNvbG9yOiNmZmZcbiAgICBzdHlsZSBJIGZpbGw6I2VmNDQ0NCxzdHJva2U6I2I5MWMxYyxjb2xvcjojZmZmXG4gICAgc3R5bGUgWCBmaWxsOiMzZjNmNDYsc3Ryb2tlOiM3MTcxN2EsY29sb3I6I2ZmZixzdHJva2UtZGFzaGFycmF5OiA1IDUiLCJtZXJtYWlkIjp7InRoZW1lIjoiZGFyayJ9fQ%3Ftype%3Dpng" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmermaid.ink%2Fimg%2FeyJjb2RlIjoiZmxvd2NoYXJ0IExSXG4gICAgQVtcIvCfk50gVGV4dDxici8-b3Ig8J-TgSBGaWxlXCJdIC0tPiBCe1wiWW91ciBicm93c2VyIHRhYlwifVxuICAgIEIgLS0-IENbXCJSZWFkIGludG8gbWVtb3J5PGJyLz4oRmlsZVJlYWRlcilcIl1cbiAgICBDIC0tPiBEW1wiRGlnZXN0IGVuZ2luZTxici8-TUQ1IMK3IFNIQS0xIMK3IFNIQS0yNTYgwrcgU0hBLTUxMlwiXVxuICAgIEQgLS0-IEVbXCI0IGhleCBkaWdlc3RzPGJyLz5zaG93biBzaWRlIGJ5IHNpZGVcIl1cbiAgICBFIC0tPiBGW1wi8J-UjSBDb21wYXJlIGFnYWluc3Q8YnIvPmV4cGVjdGVkIGNoZWNrc3VtXCJdXG4gICAgRiAtLT4gR3tcIk1hdGNoP1wifVxuICAgIEcgLS0-fFwi4pyFIFllc1wifCBIW1wiRmlsZSBpcyBpbnRhY3RcIl1cbiAgICBHIC0tPnxcIuKdjCBOb1wifCBJW1wiQ29ycnVwdGVkIG9yIHRhbXBlcmVkPGJyLz7igJQgZG8gbm90IHJ1biBpdFwiXVxuICAgIEIgLS4tPnxcIvCfmqsgbm8gcmVxdWVzdCBldmVyIGxlYXZlc1wifCBYKChcIlNlcnZlclwiKSlcblxuICAgIHN0eWxlIEEgZmlsbDojMGVhNWU5LHN0cm9rZTojMDM2OWExLGNvbG9yOiNmZmZcbiAgICBzdHlsZSBCIGZpbGw6IzBiNmU2YixzdHJva2U6IzA2NGU0Yixjb2xvcjojZmZmXG4gICAgc3R5bGUgRCBmaWxsOiM4YjVjZjYsc3Ryb2tlOiM2ZDI4ZDksY29sb3I6I2ZmZlxuICAgIHN0eWxlIEggZmlsbDojMjJjNTVlLHN0cm9rZTojMTU4MDNkLGNvbG9yOiNmZmZcbiAgICBzdHlsZSBJIGZpbGw6I2VmNDQ0NCxzdHJva2U6I2I5MWMxYyxjb2xvcjojZmZmXG4gICAgc3R5bGUgWCBmaWxsOiMzZjNmNDYsc3Ryb2tlOiM3MTcxN2EsY29sb3I6I2ZmZixzdHJva2UtZGFzaGFycmF5OiA1IDUiLCJtZXJtYWlkIjp7InRoZW1lIjoiZGFyayJ9fQ%3Ftype%3Dpng" alt="Diagram" width="1904" height="230"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The dashed line is the whole product. There is no upload step to draw.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✨ What's inside
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="50%"&gt;

### 🔢 Four algorithms, one keystroke
MD5, SHA-1, SHA-256 and SHA-512 are all computed from the same input simultaneously. No dropdown, no re-running — you get the full set and pick the one the vendor published.

&lt;/td&gt;
&lt;td width="50%"&gt;

### 📁 Drag &amp;amp; drop file hashing
Drop an installer, ZIP, ISO or PDF straight onto the drop zone. The file is read locally, so the practical size limit is your RAM — not somebody's upload quota.

&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="50%"&gt;

### 🔍 Side-by-side comparison
Paste the expected digest next to the computed one. The tool does the character-by-character check, because your eyes will absolutely miss a swapped `b` and `6` in a 64-character string.

&lt;/td&gt;
&lt;td width="50%"&gt;

### 🕘 Local history
Recent digests are kept in `localStorage` so you can come back to a checksum from ten minutes ago. Stored on your machine, readable only by you, cleared whenever you want.

&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="50%"&gt;

### 🧪 Verify the engine
A built-in self-test hashes known test vectors and confirms the output matches published values. A hash tool you can't audit is a hash tool you shouldn't trust.

&lt;/td&gt;
&lt;td width="50%"&gt;

### ✈️ Works offline
Once the page has loaded it keeps working with the network unplugged — useful on an air-gapped machine where checksum verification actually matters most.

&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🎯 Pick your algorithm in one glance
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Algorithm&lt;/th&gt;
&lt;th&gt;Length&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Reach for it when…&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SHA-256&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;64 hex chars · 256-bit&lt;/td&gt;
&lt;td&gt;🟢 &lt;strong&gt;Recommended default&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Verifying downloads, signing payloads, content addressing. If you're unsure, this is the answer.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SHA-512&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;128 hex chars · 512-bit&lt;/td&gt;
&lt;td&gt;🟢 Strong&lt;/td&gt;
&lt;td&gt;You want extra margin — and on most 64-bit CPUs it's &lt;em&gt;faster&lt;/em&gt; than SHA-256, not slower.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SHA-1&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;40 hex chars · 160-bit&lt;/td&gt;
&lt;td&gt;🟠 Deprecated&lt;/td&gt;
&lt;td&gt;Only for legacy compatibility (older Git objects, old CI manifests). Collisions were demonstrated in 2017.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MD5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;32 hex chars · 128-bit&lt;/td&gt;
&lt;td&gt;🔴 Broken&lt;/td&gt;
&lt;td&gt;Only for non-adversarial checksums and dedupe. Collisions have been cheap since 2004.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ Warning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Never store passwords as plain MD5, SHA-1, SHA-256 or SHA-512.&lt;/strong&gt; These are built to be &lt;em&gt;fast&lt;/em&gt;, and fast is the enemy of password storage — a consumer GPU chews through billions of guesses per second. Use a deliberately slow, salted KDF: &lt;strong&gt;Argon2id&lt;/strong&gt;, &lt;strong&gt;scrypt&lt;/strong&gt; or &lt;strong&gt;bcrypt&lt;/strong&gt;. This tool is for integrity, not for credentials.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🛠️ Real jobs people use it for
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Situation&lt;/th&gt;
&lt;th&gt;What you do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🐧 &lt;strong&gt;Downloaded a Linux ISO&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Hash the ISO, compare to the SHA-256 on the mirror page. A mismatch means a bad mirror or a bad actor.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📦 &lt;strong&gt;Shipped a build&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Hash the artifact locally and on the server. Same digest = the same bytes arrived.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📄 &lt;strong&gt;Two exports "look identical"&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Hash both. Identical digests prove byte-equality far faster than a diff on a 400 MB file.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔐 &lt;strong&gt;API request signing&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Generate the body checksum a signed request needs, without writing a throwaway script.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🕵️ &lt;strong&gt;Watching a config file&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Save today's hash, re-hash next month, catch a silent edit nobody logged.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🎓 &lt;strong&gt;Teaching hashing&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Type one character, watch half the output change. Nothing explains the avalanche effect faster.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  📖 Verify a download in five steps
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1.  Open  →  tooladda.online/hash-generator.html
2.  Switch the input to  File
3.  Drag your downloaded file onto the drop zone
4.  Copy the SHA-256 value it produces
5.  Paste the vendor's published checksum into  Compare
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;a href="https://tooladda.online/hash-generator.html" rel="noopener noreferrer"&gt;▶ Verify a download now — tooladda.online/hash-generator.html&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🟢 Match&lt;/strong&gt; → the file is bit-for-bit what the publisher released. Install away.&lt;br&gt;
&lt;strong&gt;🔴 Mismatch&lt;/strong&gt; → stop. Delete it, re-download from the official source, hash again. A failed checksum on an executable is not a "probably fine".&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💡 Tip&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Checksums only prove the file matches &lt;em&gt;the checksum you compared against&lt;/em&gt;. If an attacker controls the download page, they control both. Prefer a checksum from a &lt;strong&gt;different&lt;/strong&gt; channel than the file itself — a signed release, the project's GPG-signed &lt;code&gt;SHASUMS&lt;/code&gt; file, or the maintainer's repo.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🧠 Hashing is not encryption
&lt;/h2&gt;

&lt;p&gt;A lot of confusion, cleared up in one table:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Hashing&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Encryption&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Direction&lt;/td&gt;
&lt;td&gt;One-way — no undo&lt;/td&gt;
&lt;td&gt;Two-way — decrypt with the key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output size&lt;/td&gt;
&lt;td&gt;Always fixed&lt;/td&gt;
&lt;td&gt;Grows with the input&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Needs a key?&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Purpose&lt;/td&gt;
&lt;td&gt;Prove nothing changed&lt;/td&gt;
&lt;td&gt;Keep content secret&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can you recover the input?&lt;/td&gt;
&lt;td&gt;❌ Never&lt;/td&gt;
&lt;td&gt;✅ With the key&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Those "MD5 decrypter" sites aren't reversing anything. They're looking your digest up in a giant precomputed table of common strings. Hash &lt;code&gt;password123&lt;/code&gt; and you'll be in it. Hash a 40-character random passphrase and no table on earth has it.&lt;/p&gt;




&lt;h2&gt;
  
  
  ❓ FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is this hash generator really free?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. No account, no trial, no per-day cap, no watermark, no "upgrade to hash files over 5 MB".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do my files get uploaded anywhere?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. The file is read into your browser's memory and hashed there. Open your browser's Network tab while you hash something — you'll see no request carrying your data. That's the design, and it's verifiable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How large a file can I hash?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There's no server-imposed cap, so the ceiling is your own device's available memory. Multi-hundred-megabyte files are routine on a normal laptop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which hash should I pick if I don't care about the details?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SHA-256. It's the modern default, it's what most projects publish, and it's the one you'll match against most often.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two files have the same MD5. Are they identical?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Almost certainly yes by accident, but not provably. MD5 collisions can be manufactured deliberately and cheaply, so a matching MD5 is not evidence against an attacker. For that, use SHA-256.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I get the original text back from a hash?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. Hashing is one-way by construction. The only "recovery" possible is guessing inputs until one produces the same digest — which is why short, common, unsalted inputs are weak and long random ones are not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does it work without internet?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes — load the page once, then it keeps hashing offline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why do the same bytes give a different hash than my terminal?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Usually a trailing newline. &lt;code&gt;echo hello&lt;/code&gt; hashes &lt;code&gt;hello\n&lt;/code&gt;, not &lt;code&gt;hello&lt;/code&gt;. Use &lt;code&gt;printf&lt;/code&gt;, or paste without the newline. This trips up almost everyone once.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔬 Under the hood
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero dependencies, zero framework&lt;/strong&gt; — one HTML page, vanilla JavaScript, no build step.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No backend&lt;/strong&gt; — there is no server-side code to trust, because there is no server-side code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-tested&lt;/strong&gt; — digest logic is covered by unit tests run against published test vectors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PWA-friendly&lt;/strong&gt; — web manifest, theme colour, installable to your home screen, offline-capable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy by architecture&lt;/strong&gt; — not a policy promise you have to take on faith, but a consequence of where the code runs.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧰 More from the ToolAdda security &amp;amp; dev shelf
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://tooladda.online/password-generator.html" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2F%25F0%259F%2594%2591_Password_Generator-0b6e6b%3Fstyle%3Dfor-the-badge" alt="Password Generator" width="201" height="28"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://tooladda.online/password-strength-checker.html" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2F%25F0%259F%259B%25A1%25EF%25B8%258F_Strength_Checker-0b6e6b%3Fstyle%3Dfor-the-badge" alt="Password Strength" width="189" height="28"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://tooladda.online/jwt-debugger.html" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2F%25F0%259F%258E%25AB_JWT_Debugger-0b6e6b%3Fstyle%3Dfor-the-badge" alt="JWT Debugger" width="144" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tooladda.online/uuid-generator.html" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2F%25F0%259F%2586%2594_UUID_Generator-0b6e6b%3Fstyle%3Dfor-the-badge" alt="UUID Generator" width="161" height="28"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://tooladda.online/url-encoder-decoder.html" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2F%25F0%259F%2594%2597_URL_Encoder-0b6e6b%3Fstyle%3Dfor-the-badge" alt="URL Encoder" width="134" height="28"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://tooladda.online/regex-tester.html" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2F%25E2%259A%2599%25EF%25B8%258F_Regex_Tester-0b6e6b%3Fstyle%3Dfor-the-badge" alt="Regex Tester" width="144" height="28"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Hash it. Compare it. Trust it.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://tooladda.online/hash-generator.html" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2F%25F0%259F%2594%2590_Open_Hash_Generator-0b6e6b%3Fstyle%3Dfor-the-badge%26labelColor%3D064e4b" alt="Open Hash Generator" width="203" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Part of &lt;strong&gt;&lt;a href="https://tooladda.online" rel="noopener noreferrer"&gt;ToolAdda&lt;/a&gt;&lt;/strong&gt; — 130+ free, private, browser-based tools.&lt;/p&gt;

&lt;p&gt;No signup · No uploads · No nonsense.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;&lt;a href="https://tooladda.online/hash-generator.html" rel="noopener noreferrer"&gt;Hash Generator&lt;/a&gt; is part of &lt;a href="https://tooladda.online" rel="noopener noreferrer"&gt;ToolAdda&lt;/a&gt; — 130+ free, privacy-first, browser-based tools. Nothing is uploaded; everything runs on your own device.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>privacy</category>
      <category>webdev</category>
      <category>tools</category>
    </item>
  </channel>
</rss>
