<?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: Adil Bensied</title>
    <description>The latest articles on DEV Community by Adil Bensied (@adilbensied).</description>
    <link>https://dev.to/adilbensied</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%2F4150576%2F14ebbffc-c184-4fcf-81e2-230a607d26ad.png</url>
      <title>DEV Community: Adil Bensied</title>
      <link>https://dev.to/adilbensied</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adilbensied"/>
    <language>en</language>
    <item>
      <title>I Built 30 Free Browser-Based Text Tools That Never Upload Your Data</title>
      <dc:creator>Adil Bensied</dc:creator>
      <pubDate>Tue, 29 Sep 2026 21:21:01 +0000</pubDate>
      <link>https://dev.to/adilbensied/i-built-30-free-browser-based-text-tools-that-never-upload-your-data-4lgc</link>
      <guid>https://dev.to/adilbensied/i-built-30-free-browser-based-text-tools-that-never-upload-your-data-4lgc</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; I built &lt;a href="https://thetextkit.com/" rel="noopener noreferrer"&gt;TheTextKit&lt;/a&gt;, a free collection of 30 browser-based utilities for text, developers and students. Word counter, JSON formatter, GPA calculator and more. Everything runs locally in your browser, so nothing you type is sent to a server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built another set of online text tools
&lt;/h2&gt;

&lt;p&gt;Every developer pastes things into random online tools: a JSON payload with API keys, a list of customer emails, an unpublished draft. Most of those tools process your input on a server, and you have no easy way to check.&lt;/p&gt;

&lt;p&gt;I wanted the opposite: fast utilities where the text stays on your machine. That became TheTextKit, 30 tools in 7 categories, all client-side.&lt;/p&gt;

&lt;h2&gt;
  
  
  How TheTextKit keeps your text private
&lt;/h2&gt;

&lt;p&gt;The rule is simple: &lt;strong&gt;all processing happens in your browser&lt;/strong&gt;. Nothing you paste is transmitted to a server.&lt;/p&gt;

&lt;p&gt;You can verify it yourself. Open your browser's DevTools, switch to the &lt;strong&gt;Network&lt;/strong&gt; tab, paste some text into the &lt;a href="https://thetextkit.com/tools/word-counter" rel="noopener noreferrer"&gt;Word Counter&lt;/a&gt;, and watch for outgoing requests while it counts.&lt;/p&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkokm5z9zbdht5z0mbyfi.png" 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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkokm5z9zbdht5z0mbyfi.png" alt="TheTextKit word counter showing 21 words and 170 characters for pasted text, processed locally in the browser" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The Word Counter gives instant word and character counts while the text never leaves your browser.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What's inside: 30 tools in 7 categories
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Tools&lt;/th&gt;
&lt;th&gt;Examples&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Analysis &amp;amp; counting&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://thetextkit.com/tools/word-counter" rel="noopener noreferrer"&gt;Word Counter&lt;/a&gt;, &lt;a href="https://thetextkit.com/tools/reading-time-calculator" rel="noopener noreferrer"&gt;Reading Time Calculator&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Case &amp;amp; formatting&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://thetextkit.com/tools/case-converter" rel="noopener noreferrer"&gt;Case Converter&lt;/a&gt;, &lt;a href="https://thetextkit.com/tools/url-slug-generator" rel="noopener noreferrer"&gt;URL Slug Generator&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lines &amp;amp; lists&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://thetextkit.com/tools/remove-duplicate-lines" rel="noopener noreferrer"&gt;Remove Duplicate Lines&lt;/a&gt;, &lt;a href="https://thetextkit.com/tools/sort-lines" rel="noopener noreferrer"&gt;Sort Lines&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Developer &amp;amp; web&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://thetextkit.com/tools/json-formatter" rel="noopener noreferrer"&gt;JSON Formatter&lt;/a&gt;, &lt;a href="https://thetextkit.com/tools/regex-tester" rel="noopener noreferrer"&gt;Regex Tester&lt;/a&gt;, &lt;a href="https://thetextkit.com/tools/diff-checker" rel="noopener noreferrer"&gt;Diff Checker&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Writing &amp;amp; content&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a href="https://thetextkit.com/tools/lorem-ipsum-generator" rel="noopener noreferrer"&gt;Lorem Ipsum Generator&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text extraction&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://thetextkit.com/tools/extract-emails" rel="noopener noreferrer"&gt;Extract Emails&lt;/a&gt;, &lt;a href="https://thetextkit.com/tools/extract-urls" rel="noopener noreferrer"&gt;Extract URLs&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Student tools&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://thetextkit.com/tools/gpa-calculator" rel="noopener noreferrer"&gt;GPA Calculator&lt;/a&gt;, &lt;a href="https://thetextkit.com/tools/grade-calculator" rel="noopener noreferrer"&gt;Grade Calculator&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Every tool follows the same pattern: &lt;strong&gt;input → transform → output&lt;/strong&gt;. That keeps them fast, predictable and easy to maintain.&lt;/p&gt;
&lt;h2&gt;
  
  
  Developer tools: the JSON Formatter
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://thetextkit.com/tools/json-formatter" rel="noopener noreferrer"&gt;JSON Formatter &amp;amp; Validator&lt;/a&gt; is probably the tool I use most. Paste raw or minified JSON and it validates and pretty-prints it with 2-space indentation. A toggle switches to minify mode. If the input is invalid, the error points to the exact position of the problem, with no silent failures.&lt;/p&gt;

&lt;p&gt;Conceptually, the core is just two built-in calls:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pretty&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// pretty-print&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;mini&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;          &lt;span class="c1"&gt;// minify&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The real work is in the details: clear errors, instant feedback and a one-click copy button.&lt;/p&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7qmtker0jxz6qk4u9nfy.png" 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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7qmtker0jxz6qk4u9nfy.png" alt="TheTextKit JSON formatter and validator with pretty-print and minify modes showing formatted JSON output" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Pretty-print or minify JSON with clear error reporting, entirely in the browser.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The developer category also includes a &lt;a href="https://thetextkit.com/tools/base64-encoder-decoder" rel="noopener noreferrer"&gt;Base64 Encoder/Decoder&lt;/a&gt;, a &lt;a href="https://thetextkit.com/tools/url-encoder-decoder" rel="noopener noreferrer"&gt;URL Encoder/Decoder&lt;/a&gt;, a &lt;a href="https://thetextkit.com/tools/uuid-generator" rel="noopener noreferrer"&gt;UUID v4 Generator&lt;/a&gt;, a &lt;a href="https://thetextkit.com/tools/password-generator" rel="noopener noreferrer"&gt;Password Generator&lt;/a&gt;, and &lt;a href="https://thetextkit.com/tools/csv-to-json" rel="noopener noreferrer"&gt;CSV to JSON&lt;/a&gt; and &lt;a href="https://thetextkit.com/tools/json-to-csv" rel="noopener noreferrer"&gt;JSON to CSV&lt;/a&gt; converters.&lt;/p&gt;
&lt;h2&gt;
  
  
  Student tools: because grades are private too
&lt;/h2&gt;

&lt;p&gt;It might seem odd to put calculators on a text-tools site. But GPAs and grades are personal data, so the same privacy-first approach fits. I added three calculators, each showing its work.&lt;/p&gt;
&lt;h3&gt;
  
  
  Percentage Calculator
&lt;/h3&gt;

&lt;p&gt;The &lt;a href="https://thetextkit.com/tools/percentage-calculator" rel="noopener noreferrer"&gt;Percentage Calculator&lt;/a&gt; handles three common problems: finding a percentage of a number, finding what percent one number is of another, and calculating percentage increase or decrease. It displays the formula next to each result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Percentage change = ((new − old) ÷ |old|) × 100
((90 − 75) ÷ 75) × 100 = +20%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1h1bgky6w3q5u1rf8nyy.png" 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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1h1bgky6w3q5u1rf8nyy.png" alt="TheTextKit percentage calculator showing 15% of 80 equals 12, 42 is 84% of 50, and a 20% increase from 75 to 90" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Three percentage calculations in one page, each with its formula shown.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  GPA Calculator
&lt;/h3&gt;

&lt;p&gt;The &lt;a href="https://thetextkit.com/tools/gpa-calculator" rel="noopener noreferrer"&gt;GPA Calculator&lt;/a&gt; computes semester and cumulative GPA in real time. It supports the unweighted 4.0 scale, weighted Honors and AP/IB courses, plus/minus grading, and prior cumulative credits.&lt;/p&gt;

&lt;p&gt;In the example below, four courses totaling 13 credits produce 45.7 quality points, which gives a GPA of 45.7 ÷ 13 ≈ &lt;strong&gt;3.52&lt;/strong&gt;.&lt;/p&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjbi79wy954r5fb0vu68v.png" 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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjbi79wy954r5fb0vu68v.png" alt="TheTextKit GPA calculator showing a 3.52 semester GPA from four courses with weighted and unweighted grading scales" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Semester GPA, credits and quality points update as you edit your courses.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Grade Calculator
&lt;/h3&gt;

&lt;p&gt;The &lt;a href="https://thetextkit.com/tools/grade-calculator" rel="noopener noreferrer"&gt;Grade Calculator&lt;/a&gt; has two modes. The first calculates your weighted course grade across categories like homework, quizzes and exams. The second tells you what score you need on your final exam to hit a target grade.&lt;/p&gt;

&lt;p&gt;If your weights don't add up to 100%, it normalizes them automatically. In the example, 75% of the course is graded and the current average is &lt;strong&gt;88.67% (B+)&lt;/strong&gt;.&lt;/p&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fifr5t89u2lwmelbi95il.png" 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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fifr5t89u2lwmelbi95il.png" alt="TheTextKit grade calculator showing a weighted course average of 88.67 percent across homework, quizzes, midterm and projects" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Weighted categories in, current average and remaining weight out.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Design decisions that paid off
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Show the formula.&lt;/strong&gt; Users trust a result more when they can see how it was calculated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make errors specific.&lt;/strong&gt; "Invalid JSON" isn't enough. Pointing to the exact position saves real time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-link related tools.&lt;/strong&gt; Each tool page suggests related utilities, so people who count words also find the reading-time and character counters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep URLs clean and predictable.&lt;/strong&gt; Every tool lives at &lt;code&gt;/tools/&amp;lt;tool-name&amp;gt;&lt;/code&gt;, grouped by category.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Update results as you type.&lt;/strong&gt; Counts, GPA and grades recalculate live, so you see the answer without extra clicks.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;Does TheTextKit upload my text?&lt;/strong&gt;&lt;br&gt;
No. All tools run locally in your browser, with zero server transmissions for your input.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is TheTextKit free?&lt;/strong&gt;&lt;br&gt;
Yes, all 30 tools are free to use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How many tools are there?&lt;/strong&gt;&lt;br&gt;
30, across 7 categories. See the &lt;a href="https://thetextkit.com/tools" rel="noopener noreferrer"&gt;full tools directory&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I suggest a new tool?&lt;/strong&gt;&lt;br&gt;
Yes, use the &lt;a href="https://thetextkit.com/contact" rel="noopener noreferrer"&gt;contact page&lt;/a&gt; or leave a comment below.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it and tell me what's missing
&lt;/h2&gt;

&lt;p&gt;Browse all 30 tools at &lt;a href="https://thetextkit.com/" rel="noopener noreferrer"&gt;thetextkit.com&lt;/a&gt;. If there's a text or developer utility you keep wishing existed, tell me in the comments. I'm deciding what to build next.&lt;/p&gt;

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