<?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: Muhammad Wasim</title>
    <description>The latest articles on DEV Community by Muhammad Wasim (@muhammad_wasim_0868820891).</description>
    <link>https://dev.to/muhammad_wasim_0868820891</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%2F4242733%2Faf45f2a4-23fd-4955-abe9-fffae62252af.png</url>
      <title>DEV Community: Muhammad Wasim</title>
      <link>https://dev.to/muhammad_wasim_0868820891</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/muhammad_wasim_0868820891"/>
    <language>en</language>
    <item>
      <title>Test a Regular Expression Against Real Text Before It Lands in Production</title>
      <dc:creator>Muhammad Wasim</dc:creator>
      <pubDate>Fri, 13 Nov 2026 12:15:01 +0000</pubDate>
      <link>https://dev.to/muhammad_wasim_0868820891/test-a-regular-expression-against-real-text-before-it-lands-in-production-4emh</link>
      <guid>https://dev.to/muhammad_wasim_0868820891/test-a-regular-expression-against-real-text-before-it-lands-in-production-4emh</guid>
      <description>&lt;p&gt;A regular expression that “worked on one example” is one of the more expensive kinds of almost-right. It accepts &lt;code&gt;ali@gmail.com&lt;/code&gt;, then silently fails a plus-tag, a hyphen in the domain, or a Pakistani mobile number written with spaces. The cheap habit is to try the pattern against a messy block of real text before you paste it into code.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the tester shows you
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://toolsphare.com/tools/regex-tester" rel="noopener noreferrer"&gt;Regex Tester on ToolSphare&lt;/a&gt; has a &lt;strong&gt;Regular expression&lt;/strong&gt; field, a &lt;strong&gt;Test string&lt;/strong&gt; box, three flags, a &lt;strong&gt;Test Regex&lt;/strong&gt; button, then &lt;strong&gt;Matches&lt;/strong&gt; and a &lt;strong&gt;Highlighted result&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The flags are the familiar JavaScript-style trio:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Global (g)&lt;/strong&gt; — find every match, not only the first&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ignore case (i)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiline (m)&lt;/strong&gt; — so &lt;code&gt;^&lt;/code&gt; and &lt;code&gt;$&lt;/code&gt; can match at line ends, not only at the start and end of the whole string&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The pattern placeholder is an email-like example: &lt;code&gt;\b\w+@\w+\.\w+\b&lt;/code&gt;. That is a reasonable demonstration and a poor production email validator, which is a useful lesson in itself. &lt;code&gt;\w+&lt;/code&gt; does not know about plus-tags or all valid domains. Use the tester to see what your pattern actually matches, not to assume a famous-looking regex is complete.&lt;/p&gt;

&lt;p&gt;There is no sign-up. You paste a pattern, paste text, test, and read the highlights.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;a href="https://toolsphare.com/tools/regex-tester" rel="noopener noreferrer"&gt;Regex Tester workspace&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Enter the pattern without surrounding slashes unless you intend those slashes to be part of the text (in this box, the pattern and the flags are separate).&lt;/li&gt;
&lt;li&gt;Tick &lt;strong&gt;g&lt;/strong&gt;, &lt;strong&gt;i&lt;/strong&gt; and &lt;strong&gt;m&lt;/strong&gt; as needed. If you only need the first match, leave &lt;strong&gt;g&lt;/strong&gt; off and notice what that does.&lt;/li&gt;
&lt;li&gt;Paste a &lt;strong&gt;test string&lt;/strong&gt; that includes both cases you want to accept and cases you want to reject.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Test Regex&lt;/strong&gt;. Read &lt;strong&gt;Matches&lt;/strong&gt; and the highlighted result. Adjust the pattern, then test again with the same text.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A practical example: emails and phone numbers in one sample
&lt;/h2&gt;

&lt;p&gt;Suppose a form should catch email addresses and 11-digit Pakistani mobile numbers written as &lt;code&gt;03xxxxxxxxx&lt;/code&gt;. Put this in the test box:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Write to ayesha@example.com or AYSHA@Example.COM.
Also try 03001234567 and 0300 1234567 and +92 3001234567.
Skip the office line 051-1234567.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A first email pattern like &lt;code&gt;\b\w+@\w+\.\w+\b&lt;/code&gt; will highlight &lt;code&gt;ayesha@example.com&lt;/code&gt;. Turn on &lt;strong&gt;Ignore case (i)&lt;/strong&gt; and &lt;strong&gt;Global (g)&lt;/strong&gt; and check whether the second address is also found. Then look at what you missed: plus-tags, subdomains, or unusual TLDs will need a more careful pattern — or, often, a real email-validation library instead of a harder regex.&lt;/p&gt;

&lt;p&gt;For the mobile numbers, try something narrow, for example &lt;code&gt;03\d{9}&lt;/code&gt;, with &lt;strong&gt;g&lt;/strong&gt; on. You should highlight &lt;code&gt;03001234567&lt;/code&gt; and &lt;em&gt;not&lt;/em&gt; the landline. You will also &lt;em&gt;not&lt;/em&gt; match &lt;code&gt;0300 1234567&lt;/code&gt; or &lt;code&gt;+92 3001234567&lt;/code&gt; unless you extend the pattern to allow a space or a &lt;code&gt;+92&lt;/code&gt; prefix. That is the point of the sample: decide which formats you officially accept, write them into the test string, and do not claim the form accepts “any Pakistani number” if you only matched one shape.&lt;/p&gt;

&lt;p&gt;A second, slightly different job is extracting capture groups (the bits in parentheses). If this tester’s &lt;strong&gt;Matches&lt;/strong&gt; list shows the full match only, you may still need your unit tests to assert on groups. The on-page contract is: pattern, flags, test string, matches, highlighted result.&lt;/p&gt;

&lt;h2&gt;
  
  
  Habits that keep regexes boring (in a good way)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Keep a fixture of real strings next to the pattern, including nasty ones.&lt;/li&gt;
&lt;li&gt;Prefer a simple pattern plus ordinary code (length checks, a phone library) over one giant expression.&lt;/li&gt;
&lt;li&gt;Remember that &lt;code&gt;.&lt;/code&gt; does not match a newline unless your flavour says so, and that &lt;code&gt;multiline&lt;/code&gt; is not the same as “dot matches all”.&lt;/li&gt;
&lt;li&gt;Never paste production secrets into a test string on a shared computer.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;Which flags can I set?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Global (g)&lt;/strong&gt;, &lt;strong&gt;Ignore case (i)&lt;/strong&gt; and &lt;strong&gt;Multiline (m)&lt;/strong&gt;, each as a checkbox next to the pattern.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is only the first match highlighted?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Global (g)&lt;/strong&gt; is probably off. Turn it on when you want every match in the test string.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need an account?&lt;/strong&gt;&lt;br&gt;
No. The page describes the tester as free, with no sign-up for the core workflow.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I build &lt;a href="https://toolsphare.com" rel="noopener noreferrer"&gt;ToolSphare&lt;/a&gt;, the free tools site that hosts the regex tester described above.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Which UUID Should You Generate: v4, v1, or a Name-Based v3/v5?</title>
      <dc:creator>Muhammad Wasim</dc:creator>
      <pubDate>Fri, 13 Nov 2026 12:14:29 +0000</pubDate>
      <link>https://dev.to/muhammad_wasim_0868820891/which-uuid-should-you-generate-v4-v1-or-a-name-based-v3v5-1842</link>
      <guid>https://dev.to/muhammad_wasim_0868820891/which-uuid-should-you-generate-v4-v1-or-a-name-based-v3v5-1842</guid>
      <description>&lt;p&gt;Most applications need identifiers that will not clash, even when two machines create records at the same time without asking a central database for the next integer. That is what a UUID is for: a 128-bit value you can generate independently.&lt;/p&gt;

&lt;p&gt;The default choice is usually a random &lt;strong&gt;v4&lt;/strong&gt;. The other versions exist for cases where you want time-ordering, or a value you can recreate from a name.&lt;/p&gt;

&lt;h2&gt;
  
  
  Versions this generator supports
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://toolsphare.com/tools/uuid-generator" rel="noopener noreferrer"&gt;UUID Generator on ToolSphare&lt;/a&gt; follows &lt;strong&gt;RFC 4122&lt;/strong&gt; and can produce versions &lt;strong&gt;1, 3, 4 and 5&lt;/strong&gt;. The page itself summarises them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;v1&lt;/strong&gt; — time-based, with a clock sequence and node&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;v3&lt;/strong&gt; — name-based, using MD5&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;v4&lt;/strong&gt; — random (most common)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;v5&lt;/strong&gt; — name-based, using SHA-1&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For v3 and v5 you also choose a &lt;strong&gt;namespace&lt;/strong&gt; — &lt;strong&gt;DNS&lt;/strong&gt;, &lt;strong&gt;URL&lt;/strong&gt;, &lt;strong&gt;OID&lt;/strong&gt;, &lt;strong&gt;X.500 DN&lt;/strong&gt;, or a &lt;strong&gt;custom UUID&lt;/strong&gt; — and a &lt;strong&gt;name&lt;/strong&gt; (the field defaults to &lt;code&gt;example.com&lt;/code&gt;). The same name and namespace always yield the same v5 (or v3) identifier, which is the point: a stable ID for “this domain” or “this URL”, not a random one.&lt;/p&gt;

&lt;p&gt;Formatting options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Uppercase letters (A–F)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Include braces &lt;code&gt;{ }&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Include hyphens&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auto generate on load&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A quantity stepper sits next to a &lt;strong&gt;Generate UUID&lt;/strong&gt; button. The result panel shows the UUID, plus &lt;strong&gt;version&lt;/strong&gt;, &lt;strong&gt;variant&lt;/strong&gt; (RFC 4122), character count, a generated timestamp, and — for relevant versions — a timestamp field. You can copy or download a single value.&lt;/p&gt;

&lt;p&gt;A second section, &lt;strong&gt;Bulk UUID Generator&lt;/strong&gt;, asks how many to create (it defaults to 10), then &lt;strong&gt;Generate Bulk&lt;/strong&gt;, with &lt;strong&gt;Copy All&lt;/strong&gt;, &lt;strong&gt;Download .txt&lt;/strong&gt; and &lt;strong&gt;Clear&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Generation is described as happening in the browser, with no registration.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;a href="https://toolsphare.com/tools/uuid-generator" rel="noopener noreferrer"&gt;UUID Generator workspace&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Pick a version. Use &lt;strong&gt;v4&lt;/strong&gt; unless you have a reason not to.&lt;/li&gt;
&lt;li&gt;For v3 or v5, set the namespace and the name. For v4 or v1 you can ignore those fields.&lt;/li&gt;
&lt;li&gt;Set formatting (hyphens on is the usual text form) and click &lt;strong&gt;Generate UUID&lt;/strong&gt;, or set a bulk count and &lt;strong&gt;Generate Bulk&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Copy the value into your fixture, schema or config. Do not hand-edit a character in the middle; generate a new one instead.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A practical example: test data versus a stable namespace ID
&lt;/h2&gt;

&lt;p&gt;A developer in Islamabad needs 25 user IDs for a local demo database. Those IDs should be unique, but they do not need to mean anything. They choose &lt;strong&gt;v4&lt;/strong&gt;, set the bulk count to 25, generate, and download the &lt;code&gt;.txt&lt;/code&gt; list. Hyphens stay on, lowercase is fine, no braces, because that matches what their PostgreSQL &lt;code&gt;uuid&lt;/code&gt; column expects.&lt;/p&gt;

&lt;p&gt;Separately, a script needs a persistent ID for the site &lt;code&gt;docs.example.com&lt;/code&gt; that any machine can recompute without a shared database row. That is a &lt;strong&gt;v5&lt;/strong&gt; job: namespace &lt;strong&gt;DNS&lt;/strong&gt;, name &lt;code&gt;docs.example.com&lt;/code&gt;. Running the generator twice with those inputs should produce the same UUID. If a third environment types &lt;code&gt;www.docs.example.com&lt;/code&gt; instead, it will get a different ID — the name is part of the input.&lt;/p&gt;

&lt;p&gt;Use &lt;strong&gt;v1&lt;/strong&gt; only if you understand that it encodes time (and, in classic v1, a node identifier). Many teams prefer v4 so IDs do not leak creation time in the obvious way.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a UUID is not
&lt;/h2&gt;

&lt;p&gt;It is not a secret. v4 IDs are hard to guess, but they are not authentication tokens and should not be treated as passwords. It is also not a substitute for a uniqueness constraint in your database; collisions are extremely unlikely for v4, but your schema should still describe the column as unique if that is the rule.&lt;/p&gt;

&lt;p&gt;If a library or API asks for a “GUID”, it is usually the same 128-bit idea, sometimes printed with braces. Use the braces checkbox rather than adding &lt;code&gt;{ }&lt;/code&gt; by hand.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Which version should I pick by default?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;v4&lt;/strong&gt; (random). That is the one the tool’s own guide calls the most common.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I generate many at once?&lt;/strong&gt;&lt;br&gt;
Yes. The bulk section lets you choose a count, then copy or download a list as &lt;code&gt;.txt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need an account?&lt;/strong&gt;&lt;br&gt;
No. The page describes the generator as free, running in the browser, with no sign-up.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I build &lt;a href="https://toolsphare.com" rel="noopener noreferrer"&gt;ToolSphare&lt;/a&gt;, the free tools site that hosts the UUID generator described above.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>What a SHA-256 Hash Is For — and How to Compute One From Text in the Browser</title>
      <dc:creator>Muhammad Wasim</dc:creator>
      <pubDate>Fri, 13 Nov 2026 12:08:30 +0000</pubDate>
      <link>https://dev.to/muhammad_wasim_0868820891/what-a-sha-256-hash-is-for-and-how-to-compute-one-from-text-in-the-browser-42jf</link>
      <guid>https://dev.to/muhammad_wasim_0868820891/what-a-sha-256-hash-is-for-and-how-to-compute-one-from-text-in-the-browser-42jf</guid>
      <description>&lt;p&gt;A hash is a fingerprint, not a disguise. The same input always produces the same output, and you cannot usefully turn that output back into the input. That makes hashes good for asking “is this the same file or string I had yesterday?” and a poor place to “store a password” by itself.&lt;/p&gt;

&lt;p&gt;If you only need a digest of some text, you do not need to install OpenSSL just to get it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the tool computes
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://toolsphare.com/tools/hash-generator" rel="noopener noreferrer"&gt;Hash Generator on ToolSphare&lt;/a&gt; has three fields: &lt;strong&gt;Input text&lt;/strong&gt;, &lt;strong&gt;Algorithm&lt;/strong&gt;, and &lt;strong&gt;Hash output&lt;/strong&gt;, plus &lt;strong&gt;Generate Hash&lt;/strong&gt; and &lt;strong&gt;Copy&lt;/strong&gt;. The algorithms in the menu are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SHA-256&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SHA-384&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SHA-512&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is no account wall. You paste or type text, pick an algorithm, generate, and copy the hex digest. For everyday checksums, &lt;strong&gt;SHA-256&lt;/strong&gt; is the usual choice. SHA-384 and SHA-512 are longer members of the same family; use them when a protocol or a document tells you to, not because longer automatically means “more secure” for a simple fingerprint.&lt;/p&gt;

&lt;p&gt;The workspace is a &lt;strong&gt;text&lt;/strong&gt; hasher. If you need the digest of a binary file, hash the file in a tool that accepts files (or &lt;code&gt;sha256sum&lt;/code&gt; on a computer you trust). Pasting the contents of a photo into a text box is not the same as hashing the file bytes.&lt;/p&gt;

&lt;h2&gt;
  
  
  A worked SHA-256 example
&lt;/h2&gt;

&lt;p&gt;The SHA-256 digest of the four characters &lt;code&gt;hello&lt;/code&gt;, with no newline, is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I generated that with a local SHA-256 implementation and it is a known test value. If the generator you are using prints something else for &lt;code&gt;hello&lt;/code&gt;, check two things first: did a trailing space or newline sneak in, and did you actually pick SHA-256?&lt;/p&gt;

&lt;p&gt;That sensitivity is the point. &lt;code&gt;Hello&lt;/code&gt; and &lt;code&gt;hello&lt;/code&gt; are different inputs. So are &lt;code&gt;hello&lt;/code&gt; and &lt;code&gt;hello\n&lt;/code&gt;. When you compare hashes with a colleague, agree on the exact bytes: the same spelling, the same line endings, the same algorithm.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;a href="https://toolsphare.com/tools/hash-generator" rel="noopener noreferrer"&gt;Hash Generator workspace&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Paste the text you want to fingerprint. Watch for a leftover blank line at the end.&lt;/li&gt;
&lt;li&gt;Choose &lt;strong&gt;SHA-256&lt;/strong&gt; unless you have a reason to use SHA-384 or SHA-512.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Generate Hash&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Copy the output and compare it to a published digest, or store it next to the document you hashed.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A practical example: checking a shared snippet
&lt;/h2&gt;

&lt;p&gt;Two developers in a group chat are arguing about whether a config snippet changed. One pastes the canonical text into the generator, runs SHA-256, and posts only the digest — not the secret values inside the file, if those are confidential. The other person pastes their copy, generates, and compares the hex strings. If they match, the text matches. If they do not, something differs, even if the eye cannot see it (a space, a different quote character, a Windows line ending).&lt;/p&gt;

&lt;p&gt;This is also the idea behind published checksums for downloads, except those are usually computed on the whole file, not on text pasted from a website.&lt;/p&gt;

&lt;h2&gt;
  
  
  What not to use it for
&lt;/h2&gt;

&lt;p&gt;Do not treat a raw SHA-256 of a password as “how we store logins”. Password storage needs a slow, salted password-hashing function, not a plain SHA-256 of the password. ToolSphare even lists a separate bcrypt generator and verifier among its security tools; this page is not that.&lt;/p&gt;

&lt;p&gt;Also, a hash does not encrypt. If you need confidentiality, you need encryption, not a digest. And if the text is a production secret, think twice before pasting it into any web page, including a local one on a shared machine.&lt;/p&gt;

&lt;p&gt;If you are confirming a published SHA-256 from a software vendor, hash the downloaded file with a file hasher or &lt;code&gt;sha256sum&lt;/code&gt;, then compare that digest to the one on the vendor's site. This text tool is for snippets and messages, not a substitute for that file-level check.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Which algorithms are available?&lt;/strong&gt;&lt;br&gt;
SHA-256, SHA-384 and SHA-512, selected from the &lt;strong&gt;Algorithm&lt;/strong&gt; menu.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does my hash not match a colleague’s?&lt;/strong&gt;&lt;br&gt;
The text almost certainly differs by whitespace, a newline, or the algorithm. Hash the same bytes with the same function.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is an account required?&lt;/strong&gt;&lt;br&gt;
No. The page describes the generator as free, with no sign-up for the core workflow.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I build &lt;a href="https://toolsphare.com" rel="noopener noreferrer"&gt;ToolSphare&lt;/a&gt;, the free tools site that hosts the hash generator described above.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>hashing</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Encode and Decode Base64 for APIs, Data URLs and Email — Including URL-Safe Mode</title>
      <dc:creator>Muhammad Wasim</dc:creator>
      <pubDate>Fri, 13 Nov 2026 12:07:52 +0000</pubDate>
      <link>https://dev.to/muhammad_wasim_0868820891/encode-and-decode-base64-for-apis-data-urls-and-email-including-url-safe-mode-5ebb</link>
      <guid>https://dev.to/muhammad_wasim_0868820891/encode-and-decode-base64-for-apis-data-urls-and-email-including-url-safe-mode-5ebb</guid>
      <description>&lt;p&gt;Base64 shows up in places that feel unrelated: a &lt;code&gt;data:image/png;base64,…&lt;/code&gt; URL in a stylesheet, a JWT payload, an email attachment, a YAML secret that is only “hidden” because it looks messy. The last of those is the trap. Encoding is not encryption. Anyone can decode it in a second.&lt;/p&gt;

&lt;p&gt;The useful skill is to encode and decode accurately, with the right variant, without shipping a file to a random website.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this workspace can do
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://toolsphare.com/tools/base64-encoder" rel="noopener noreferrer"&gt;Base64 Encoder/Decoder on ToolSphare&lt;/a&gt; runs in the browser. The page states that text and files never leave the device. Tabs and sections cover text encode/decode, &lt;strong&gt;Encode / Decode File&lt;/strong&gt;, &lt;strong&gt;URL Safe Base64&lt;/strong&gt;, optional &lt;strong&gt;History&lt;/strong&gt;, and a short &lt;strong&gt;How It Works&lt;/strong&gt; panel.&lt;/p&gt;

&lt;p&gt;For text, you paste into &lt;strong&gt;Input text&lt;/strong&gt;, then read &lt;strong&gt;Encoded output&lt;/strong&gt; and &lt;strong&gt;Decoded output&lt;/strong&gt;, with character and byte counts. Options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Character encoding:&lt;/strong&gt; UTF-8 (Unicode) or Latin-1 (ISO-8859-1)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Line wrap:&lt;/strong&gt; no wrap, &lt;strong&gt;64 characters (MIME)&lt;/strong&gt;, or &lt;strong&gt;76 characters (RFC 2045)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;URL Safe Base64&lt;/strong&gt; (&lt;code&gt;-&lt;/code&gt; and &lt;code&gt;_&lt;/code&gt; instead of &lt;code&gt;+&lt;/code&gt; and &lt;code&gt;/&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add padding (&lt;code&gt;=&lt;/code&gt;)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Convert automatically while typing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Save conversion history on this device&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Quick actions include &lt;strong&gt;Encode Text&lt;/strong&gt;, &lt;strong&gt;Decode Text&lt;/strong&gt;, &lt;strong&gt;Auto Detect&lt;/strong&gt;, &lt;strong&gt;Reset All&lt;/strong&gt;, and file encode/decode. The file tab accepts any file type, processed locally, &lt;strong&gt;maximum 20 MB&lt;/strong&gt;, and can &lt;strong&gt;include a Data URL prefix&lt;/strong&gt; when encoding (recommended on the page for web assets). History, if you enable it, stays in that browser.&lt;/p&gt;

&lt;p&gt;Sample strings on the page include &lt;code&gt;SGVsbG8gV29ybGQh&lt;/code&gt; for &lt;code&gt;Hello World!&lt;/code&gt;, which is a handy sanity check: if you decode that sample and do not see &lt;code&gt;Hello World!&lt;/code&gt;, you are in the wrong mode.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;a href="https://toolsphare.com/tools/base64-encoder" rel="noopener noreferrer"&gt;Base64 Encoder/Decoder&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Paste plain text (to encode) or a Base64 string (to decode) into the input box. Or drop a file on the file tab.&lt;/li&gt;
&lt;li&gt;Choose UTF-8 unless you already know the source is Latin-1. Enable URL-safe and adjust padding if the string will sit in a query parameter. Use 76-character wrap for email-style output.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Encode Text&lt;/strong&gt; or &lt;strong&gt;Decode Text&lt;/strong&gt;, or let live conversion run if you turned it on. &lt;strong&gt;Auto Detect&lt;/strong&gt; is there when you are unsure which way the text is going.&lt;/li&gt;
&lt;li&gt;Copy or download the result. Clear the boxes and the local history if the payload was sensitive.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A practical example: a query string and a small asset
&lt;/h2&gt;

&lt;p&gt;Suppose you need to put &lt;code&gt;subjects?id=42&amp;amp;ok=1&lt;/code&gt; into a URL-safe field. Standard Base64 for that UTF-8 string is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;c3ViamVjdHM/aWQ9NDImb2s9MQ==
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;/&lt;/code&gt; in the middle will break or confuse a path or query if you paste it raw. URL-safe encoding uses &lt;code&gt;_&lt;/code&gt; instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;c3ViamVjdHM_aWQ9NDImb2s9MQ==
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Turn on &lt;strong&gt;URL Safe Base64&lt;/strong&gt; before you encode, then copy the result. If the receiving API also wants padding stripped, uncheck &lt;strong&gt;Add Padding&lt;/strong&gt; and encode again rather than deleting &lt;code&gt;=&lt;/code&gt; by hand and hoping.&lt;/p&gt;

&lt;p&gt;For a small icon in a CSS file, use the file tab, enable &lt;strong&gt;Include a Data URL prefix&lt;/strong&gt;, and encode. You should get a string that starts with something like &lt;code&gt;data:&lt;/code&gt; plus a MIME type, which a stylesheet can use without a separate image request. Stay under the 20 MB file cap, and remember that inlining a large image will bloat the CSS.&lt;/p&gt;

&lt;p&gt;JWT payloads are also Base64 (usually URL-safe, often without padding). Decoding one will show you the JSON claims. It will not verify the signature, and it will not make those claims trustworthy.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Base64 will not do
&lt;/h2&gt;

&lt;p&gt;It will not hide passwords. A string ending in &lt;code&gt;=&lt;/code&gt; is not a vault. If you must transport a secret, use real encryption or a secret manager, not encoding.&lt;/p&gt;

&lt;p&gt;It can also go wrong if you pick Latin-1 for Urdu or other Unicode text: characters will be lost or garbled. Prefer UTF-8 unless you are matching a legacy system.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Is Base64 encryption?&lt;/strong&gt;&lt;br&gt;
No. It is an encoding. Anyone with a decoder can recover the original bytes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is URL-safe Base64?&lt;/strong&gt;&lt;br&gt;
It replaces &lt;code&gt;+&lt;/code&gt; with &lt;code&gt;-&lt;/code&gt; and &lt;code&gt;/&lt;/code&gt; with &lt;code&gt;_&lt;/code&gt;, and often omits padding, so the string can sit in a URL without extra escaping. The workspace has a dedicated option and tab for this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I encode a file?&lt;/strong&gt;&lt;br&gt;
Yes, locally, up to 20 MB. Encode produces Base64 text; decode expects Base64 text and downloads the binary result.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I build &lt;a href="https://toolsphare.com" rel="noopener noreferrer"&gt;ToolSphare&lt;/a&gt;, the free tools site that hosts the encoder described above.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>base64</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Practise Huruf-e-Tahajji With Letter Cards, Sound and a Ten-Question Quiz</title>
      <dc:creator>Muhammad Wasim</dc:creator>
      <pubDate>Fri, 13 Nov 2026 12:01:48 +0000</pubDate>
      <link>https://dev.to/muhammad_wasim_0868820891/practise-huruf-e-tahajji-with-letter-cards-sound-and-a-ten-question-quiz-3aa8</link>
      <guid>https://dev.to/muhammad_wasim_0868820891/practise-huruf-e-tahajji-with-letter-cards-sound-and-a-ten-question-quiz-3aa8</guid>
      <description>&lt;p&gt;A lot of early Urdu practice still starts with a wall chart and a tired adult saying “alif, be, pe” from memory. That works, until the letters with dots start to look alike, or a child wants to hear the same example word for the tenth time. A simple, browser-based trainer is useful here: big letter cards, a roman name, an example word, and a short quiz — no account, no install.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the trainer puts on the screen
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://toolsphare.com/tools/kids-urdu-alphabet" rel="noopener noreferrer"&gt;Kids Urdu Alphabet Trainer on ToolSphare&lt;/a&gt; is framed as an “Urdu Alphabet Adventure”: look, listen, learn (&lt;em&gt;دیکھیں • سنیں • سیکھیں&lt;/em&gt;). The workspace tracks &lt;strong&gt;explored&lt;/strong&gt; letters, &lt;strong&gt;points&lt;/strong&gt;, a &lt;strong&gt;streak&lt;/strong&gt;, and &lt;strong&gt;accuracy&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The alphabet is treated as &lt;strong&gt;39&lt;/strong&gt; letters (“0 of 39 explored” on a fresh visit). You can narrow the set with a &lt;strong&gt;letter group&lt;/strong&gt; control:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Complete alphabet&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Starter letters&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Letters with dots&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Urdu special letters&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A &lt;strong&gt;Speak letter names&lt;/strong&gt; checkbox is available, and each card has &lt;strong&gt;Hear letter and example&lt;/strong&gt;. The first card in the starter set is &lt;strong&gt;Alif — الف&lt;/strong&gt;, with the familiar example &lt;strong&gt;ا سے انار&lt;/strong&gt; / “Anar — pomegranate”. The chart is explicitly &lt;strong&gt;right to left&lt;/strong&gt;: “Urdu reads from right to left. Tap a letter to explore it.” Previous/next arrows move through the cards.&lt;/p&gt;

&lt;p&gt;Two modes sit at the top: &lt;strong&gt;Learn letters&lt;/strong&gt; and &lt;strong&gt;Letter quiz&lt;/strong&gt;. The quiz is a &lt;strong&gt;ten-question&lt;/strong&gt; challenge (&lt;em&gt;دس سوالات&lt;/em&gt;) with three question types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Find by letter name&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Find by example word&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mixed challenge&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A &lt;strong&gt;Remove one wrong letter&lt;/strong&gt; hint is there if a child is stuck, and a correct run is greeted with &lt;strong&gt;Shabash!&lt;/strong&gt; You can &lt;strong&gt;Play again&lt;/strong&gt; or &lt;strong&gt;Reset progress&lt;/strong&gt;. Progress is for practice, not a formal exam score.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;a href="https://toolsphare.com/tools/kids-urdu-alphabet" rel="noopener noreferrer"&gt;Kids Urdu Alphabet Trainer&lt;/a&gt; on a phone, tablet or computer with sound on.&lt;/li&gt;
&lt;li&gt;Start with &lt;strong&gt;Starter letters&lt;/strong&gt; if the child is new, or &lt;strong&gt;Complete alphabet&lt;/strong&gt; if they already know a few forms. Turn &lt;strong&gt;Speak letter names&lt;/strong&gt; on if you want audio as you browse.&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;Learn letters&lt;/strong&gt;, tap a letter on the chart, look at the Urdu form and the roman name, and press &lt;strong&gt;Hear letter and example&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;When a handful of letters feel familiar, switch to &lt;strong&gt;Letter quiz&lt;/strong&gt;. Begin with &lt;strong&gt;Find by letter name&lt;/strong&gt;, then try &lt;strong&gt;Find by example word&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;Remove one wrong letter&lt;/strong&gt; sparingly. &lt;strong&gt;Reset progress&lt;/strong&gt; only when you deliberately want a clean slate.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A practical example: ten minutes after Maghrib
&lt;/h2&gt;

&lt;p&gt;A parent sits with a six-year-old for a short session, not a full-hour drill. They choose &lt;strong&gt;Starter letters&lt;/strong&gt;, speak-on, and go through a few cards starting at Alif. The child taps &lt;strong&gt;Hear letter and example&lt;/strong&gt;, repeats “alif” and “anar”, and moves on. After five or six letters, they switch to the quiz, &lt;strong&gt;Find by letter name&lt;/strong&gt;, ten questions.&lt;/p&gt;

&lt;p&gt;If the child confuses letters that differ only by dots, the next session can use the &lt;strong&gt;Letters with dots&lt;/strong&gt; group rather than running the whole 39 again. That is a better use of the grouping than always staying on the complete chart. Keep sessions short enough that the streak still feels like fun. “Shabash!” at the end of ten questions is a better stopping point than pushing through fatigue.&lt;/p&gt;

&lt;p&gt;Teachers can put the same page on a classroom screen and let children take turns tapping the chart. Because the script is shown right to left, it is worth pointing at the chart direction the first time, especially for children who already read English left to right.&lt;/p&gt;

&lt;p&gt;This is a letter-recognition and listening trainer. It will not teach joined handwriting, full spelling, or grammar. Pair it with a copybook if writing is the goal.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;How many letters does it cover?&lt;/strong&gt;&lt;br&gt;
The workspace counts &lt;strong&gt;39&lt;/strong&gt; explored letters for the complete alphabet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does it work without creating an account?&lt;/strong&gt;&lt;br&gt;
Yes. The page describes the trainer as free, with no sign-up and no daily limit for the core workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can we practise only the harder letters?&lt;/strong&gt;&lt;br&gt;
Yes. Switch the letter group to &lt;strong&gt;Letters with dots&lt;/strong&gt; or &lt;strong&gt;Urdu special letters&lt;/strong&gt;, then use the quiz on that group.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I build &lt;a href="https://toolsphare.com" rel="noopener noreferrer"&gt;ToolSphare&lt;/a&gt;, the free tools site that hosts the Urdu alphabet trainer described above.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>kids</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to Get an Exact Age in Years, Months and Days — Including as of a Past Date</title>
      <dc:creator>Muhammad Wasim</dc:creator>
      <pubDate>Fri, 13 Nov 2026 12:01:14 +0000</pubDate>
      <link>https://dev.to/muhammad_wasim_0868820891/how-to-get-an-exact-age-in-years-months-and-days-including-as-of-a-past-date-5fln</link>
      <guid>https://dev.to/muhammad_wasim_0868820891/how-to-get-an-exact-age-in-years-months-and-days-including-as-of-a-past-date-5fln</guid>
      <description>&lt;p&gt;“How old are you?” is easy in conversation and sloppy on a form. A person born on 15 August 2003 is not simply “2026 minus 2003”. If you fill a visa, admissions or HR form on 13 November 2026, they are 23 years, 2 months and 29 days old, and some offices want that longer form, not a rounded year.&lt;/p&gt;

&lt;p&gt;You also sometimes need a different question: how old was this person on a past date, or how old will they be on a future one?&lt;/p&gt;

&lt;h2&gt;
  
  
  What the calculator returns
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://toolsphare.com/tools/age-calculator" rel="noopener noreferrer"&gt;Age Calculator on ToolSphare&lt;/a&gt; asks for a &lt;strong&gt;date of birth&lt;/strong&gt; (month, day, year) and a &lt;strong&gt;Calculate Age As Of&lt;/strong&gt; date, which defaults to today and can be reset with &lt;strong&gt;Use today&lt;/strong&gt;. Click &lt;strong&gt;Calculate Age&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The result is not only years. The workspace lists:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exact age in years, months and days&lt;/li&gt;
&lt;li&gt;Total months, weeks, days, hours and minutes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Next birthday&lt;/strong&gt; countdown&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zodiac sign&lt;/strong&gt;, &lt;strong&gt;Chinese zodiac&lt;/strong&gt;, and a &lt;strong&gt;generation&lt;/strong&gt; label&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can &lt;strong&gt;Export PDF&lt;/strong&gt; or &lt;strong&gt;Export Excel&lt;/strong&gt; if you want a formatted copy. Calculations run in the browser; the FAQ says the date of birth is not sent to or stored on ToolSphare servers.&lt;/p&gt;

&lt;p&gt;The method, as described on the page, subtracts the birth date from today or from your target date, using real calendar month lengths, including 29 February in leap years. That is the difference between an exact calculator and “divide the number of days by 365”.&lt;/p&gt;

&lt;p&gt;The zodiac and generation labels are extras. They are not what a passport office needs. For official forms, use the year/month/day figure and, if asked, the total days.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;a href="https://toolsphare.com/tools/age-calculator" rel="noopener noreferrer"&gt;Age Calculator workspace&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Enter the date of birth with the month, day and year fields.&lt;/li&gt;
&lt;li&gt;Leave &lt;strong&gt;Calculate Age As Of&lt;/strong&gt; on today, or set another date. &lt;strong&gt;Use today&lt;/strong&gt; puts today’s date back if you were experimenting.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Calculate Age&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Copy the exact age the form asked for. Use &lt;strong&gt;Reset&lt;/strong&gt; when you start a different person.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A practical example: a form due today, and an age on a cutoff date
&lt;/h2&gt;

&lt;p&gt;Take 15 August 2003 as the date of birth, and 13 November 2026 as “today”. The exact age is &lt;strong&gt;23 years, 2 months and 29 days&lt;/strong&gt;. The span is &lt;strong&gt;8,491 days&lt;/strong&gt;, which is exactly &lt;strong&gt;1,213 weeks&lt;/strong&gt;. If a medical or legal form wants chronological age in days, that days total is the figure to use, not a year count you rounded in your head.&lt;/p&gt;

&lt;p&gt;Now suppose a school admission says the child must be a certain age &lt;strong&gt;as of 1 March 2026&lt;/strong&gt;. Change &lt;strong&gt;Calculate Age As Of&lt;/strong&gt; to 1 March 2026 and calculate again. Do not use today’s age and then guess. Cutoff dates exist because a month can change eligibility.&lt;/p&gt;

&lt;p&gt;The same as-of field works for “how old was I when I started this job?” or “how old will I be on the exam date?” Set the target, calculate, reset when you are done.&lt;/p&gt;

&lt;p&gt;If the birth date falls on 29 February, a decent calculator has to know what happens in a non-leap target year. This one, according to the page, uses actual month lengths including leap days. Still, for legal cutoffs, follow the rule the issuing office publishes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Small cautions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Type the date in the order the fields ask for (month, day, year on this page). Do not swap day and month.&lt;/li&gt;
&lt;li&gt;Use the Gregorian date on the official document, not a remembered family date that was never recorded.&lt;/li&gt;
&lt;li&gt;Treat exported PDFs as a convenience, not as a certified record. If two authorities disagree about an age in days, the official document and their written rule win, not a screenshot of a calculator.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The next-birthday figure is handy for invitations or a reminder, and the total-weeks or total-hours totals are there if you want them. For a visa or admissions form, start with years, months and days, and only add the other totals if the form asks for them.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Can I calculate age as of a past or future date?&lt;/strong&gt;&lt;br&gt;
Yes. Change &lt;strong&gt;Calculate Age As Of&lt;/strong&gt; to any past or future date. Today is only the default.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does it handle leap years?&lt;/strong&gt;&lt;br&gt;
Yes. The page says the calculation uses calendar month lengths, including 29 February on leap years.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is my date of birth stored?&lt;/strong&gt;&lt;br&gt;
The FAQ says no: all calculations happen in the browser, and nothing is sent to or stored on ToolSphare servers.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I build &lt;a href="https://toolsphare.com" rel="noopener noreferrer"&gt;ToolSphare&lt;/a&gt;, the free tools site that hosts the age calculator described above.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>calculator</category>
      <category>beginners</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Measure Net WPM and Accuracy, Not Just How Fast You Hit the Keys</title>
      <dc:creator>Muhammad Wasim</dc:creator>
      <pubDate>Fri, 13 Nov 2026 11:55:13 +0000</pubDate>
      <link>https://dev.to/muhammad_wasim_0868820891/measure-net-wpm-and-accuracy-not-just-how-fast-you-hit-the-keys-3e2k</link>
      <guid>https://dev.to/muhammad_wasim_0868820891/measure-net-wpm-and-accuracy-not-just-how-fast-you-hit-the-keys-3e2k</guid>
      <description>&lt;p&gt;A lot of “I type 90 words a minute” claims fall apart the moment accuracy is counted. Ten corrections a minute is not speed; it is noise. Tests that only celebrate raw keystrokes encourage the worst habit you can take into a data-entry job or a written exam: racing ahead and leaving a trail of typos.&lt;/p&gt;

&lt;p&gt;The useful number is &lt;strong&gt;net&lt;/strong&gt; speed, with accuracy sitting next to it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How this test is scored
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://toolsphare.com/tools/typing-speed-test" rel="noopener noreferrer"&gt;Typing Speed Test on ToolSphare&lt;/a&gt; shows live &lt;strong&gt;WPM&lt;/strong&gt;, &lt;strong&gt;accuracy&lt;/strong&gt; and &lt;strong&gt;errors&lt;/strong&gt; while you type, and it remembers a &lt;strong&gt;personal best WPM&lt;/strong&gt; on the page. When you finish, you see &lt;strong&gt;Net WPM&lt;/strong&gt;, &lt;strong&gt;Gross WPM&lt;/strong&gt;, accuracy, errors, time and character count.&lt;/p&gt;

&lt;p&gt;The scoring note on the workspace is specific: &lt;strong&gt;net WPM uses the standard five-character word and subtracts uncorrected errors per minute&lt;/strong&gt;. That five-character convention is how most English typing tests define a “word”, even if your actual words are longer or shorter. Gross WPM is the raw pace; net WPM is what you should compare from one session to the next.&lt;/p&gt;

&lt;p&gt;The tips on the page are equally direct: keep your eyes on the passage, use light keystrokes, prioritise accuracy before pushing speed, use all fingers, keep wrists neutral, and restart with the &lt;strong&gt;same text&lt;/strong&gt; when you want a fair comparison.&lt;/p&gt;

&lt;h2&gt;
  
  
  Modes you can actually choose
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Test mode:&lt;/strong&gt; complete passage, or a timer of &lt;strong&gt;15 seconds&lt;/strong&gt;, &lt;strong&gt;30 seconds&lt;/strong&gt;, &lt;strong&gt;60 seconds&lt;/strong&gt;, or &lt;strong&gt;2 minutes&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Difficulty:&lt;/strong&gt; Easy, Medium, Hard, or &lt;strong&gt;Custom text&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disable paste&lt;/strong&gt;, so you cannot drop the passage into the box&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New text&lt;/strong&gt; to draw another passage, or a custom box with &lt;strong&gt;Use this text&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The typing field itself is labelled &lt;strong&gt;Type the displayed passage&lt;/strong&gt;, with a “Click here and start typing…” prompt. Buttons cover &lt;strong&gt;Start test&lt;/strong&gt;, &lt;strong&gt;Finish now&lt;/strong&gt;, &lt;strong&gt;Restart&lt;/strong&gt; and, after the result, &lt;strong&gt;Try again&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For practice, 60 seconds is a honest default. Fifteen seconds is too jumpy to judge a bad start. Two minutes will expose whether your accuracy holds once you are tired. Custom text is the right mode if you want to rehearse the kind of copy you actually type: invoice descriptions, Urdu-to-English transliteration, or a coding comment block (the test is still scored on characters, not on compiler correctness).&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;a href="https://toolsphare.com/tools/typing-speed-test" rel="noopener noreferrer"&gt;Typing Speed Test workspace&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Pick a time mode or “complete passage”, and a difficulty. Tick &lt;strong&gt;Disable paste&lt;/strong&gt; if you want to be strict.&lt;/li&gt;
&lt;li&gt;Optionally paste a practice passage into &lt;strong&gt;Custom practice text&lt;/strong&gt; and click &lt;strong&gt;Use this text&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Start test&lt;/strong&gt; (or click the typing box) and type the passage as shown. Do not stop to admire the live WPM until the end.&lt;/li&gt;
&lt;li&gt;Read &lt;strong&gt;Net WPM&lt;/strong&gt; and &lt;strong&gt;accuracy&lt;/strong&gt; together. Restart with the same text if you are measuring improvement.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A practical example: preparing for a timed office test
&lt;/h2&gt;

&lt;p&gt;A candidate for an admin or data-entry role is told the interview includes a typing test. For a week they run the same Medium, 60-second passage once a day, paste disabled, same keyboard and sitting position.&lt;/p&gt;

&lt;p&gt;Day one might look like a high gross WPM and an unpleasant error count. That is useful information: slow down. The target is not a heroic peak on a lucky 15-second burst. It is a net WPM they can repeat, with accuracy close to 100%. When net WPM rises and errors fall on the &lt;strong&gt;same&lt;/strong&gt; passage, the practice is working. Then they click &lt;strong&gt;New text&lt;/strong&gt; a few times, so they are not only memorising one paragraph.&lt;/p&gt;

&lt;p&gt;If the workplace uses a lot of numbers or fixed phrases, put a short sample of that in custom text and measure that too. A speed on easy prose does not always transfer to invoice lines.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;What is the difference between net and gross WPM?&lt;/strong&gt;&lt;br&gt;
Gross is raw speed. Net uses the five-character word standard and subtracts uncorrected errors per minute, which is the figure to track.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I practise with my own text?&lt;/strong&gt;&lt;br&gt;
Yes. Set difficulty to &lt;strong&gt;Custom text&lt;/strong&gt;, paste into &lt;strong&gt;Custom practice text&lt;/strong&gt;, and click &lt;strong&gt;Use this text&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need to sign up?&lt;/strong&gt;&lt;br&gt;
No. The page describes the test as free, with no account and no daily limit for the core workflow.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I build &lt;a href="https://toolsphare.com" rel="noopener noreferrer"&gt;ToolSphare&lt;/a&gt;, the free tools site that hosts the typing test described above.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Turn Semester SGPAs Into a Credit-Weighted CGPA You Can Export</title>
      <dc:creator>Muhammad Wasim</dc:creator>
      <pubDate>Fri, 13 Nov 2026 11:54:37 +0000</pubDate>
      <link>https://dev.to/muhammad_wasim_0868820891/turn-semester-sgpas-into-a-credit-weighted-cgpa-you-can-export-12nl</link>
      <guid>https://dev.to/muhammad_wasim_0868820891/turn-semester-sgpas-into-a-credit-weighted-cgpa-you-can-export-12nl</guid>
      <description>&lt;p&gt;A semester GPA (SGPA) tells you how one term went. A cumulative GPA (CGPA) is the credit-weighted story of all the terms you include. Equal-weighting four semesters — adding 3.2, 3.4, 3.7 and 3.1 and dividing by four — is wrong if one of those terms was a short load and another was 21 credit hours.&lt;/p&gt;

&lt;p&gt;If you are filling an internship form, a graduate application, or a family conversation about “what is your CGPA now”, use the weighted formula.&lt;/p&gt;

&lt;h2&gt;
  
  
  The formula the tool uses
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://toolsphare.com/tools/cgpa-calculator" rel="noopener noreferrer"&gt;CGPA Calculator on ToolSphare&lt;/a&gt; states it clearly:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CGPA = sum(SGPA × semester credits) ÷ sum(credits)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You pick a &lt;strong&gt;grade scale&lt;/strong&gt; first: &lt;strong&gt;10-point&lt;/strong&gt;, &lt;strong&gt;4-point&lt;/strong&gt;, or &lt;strong&gt;5-point&lt;/strong&gt;, described as the maximum grade point your institution uses. Many Pakistani universities issue a 4.0-scale CGPA; a 10-point scale is common on some other transcripts. Using the wrong maximum will not change the weighted average of the numbers you type, but it will mis-label the scale and the &lt;strong&gt;normalized percentage&lt;/strong&gt; the result panel shows.&lt;/p&gt;

&lt;p&gt;That percentage comes with an important caveat on the page: &lt;em&gt;this is a simple scale conversion. Your institution’s official CGPA-to-percentage formula may differ.&lt;/em&gt; If a job ad asks for a percentage, follow the university’s published conversion, not a generic one.&lt;/p&gt;

&lt;p&gt;After you calculate, the workspace shows CGPA, total credits, weighted total, scale, number of semesters, highest SGPA and the normalized percentage. You can &lt;strong&gt;Export PDF&lt;/strong&gt; or &lt;strong&gt;Export Excel&lt;/strong&gt; for a formatted report. The page notes that grades stay in the browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;a href="https://toolsphare.com/tools/cgpa-calculator" rel="noopener noreferrer"&gt;CGPA Calculator workspace&lt;/a&gt;. &lt;strong&gt;Use sample&lt;/strong&gt; will fill a demonstration; clear it when you are ready for your own figures.&lt;/li&gt;
&lt;li&gt;Choose the 10-point, 4-point or 5-point scale that matches your transcript.&lt;/li&gt;
&lt;li&gt;For each completed semester, enter a name, the &lt;strong&gt;SGPA&lt;/strong&gt;, and the &lt;strong&gt;credits&lt;/strong&gt; for that term. Click &lt;strong&gt;+ Add semester&lt;/strong&gt; as needed.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Calculate CGPA&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;If you need a copy for your records, use &lt;strong&gt;Export PDF&lt;/strong&gt; or &lt;strong&gt;Export Excel&lt;/strong&gt;. The FAQ says the export is a branded report with ToolSphare and developer credits, so glance at the file before you attach it to a formal application.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A practical example: four semesters on a 4.0 scale
&lt;/h2&gt;

&lt;p&gt;A student has:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Semester name&lt;/th&gt;
&lt;th&gt;SGPA&lt;/th&gt;
&lt;th&gt;Credits&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Fall 2024&lt;/td&gt;
&lt;td&gt;3.20&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Spring 2025&lt;/td&gt;
&lt;td&gt;3.45&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fall 2025&lt;/td&gt;
&lt;td&gt;3.70&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Spring 2026&lt;/td&gt;
&lt;td&gt;3.10&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The last term has the most credits and the lowest SGPA, so it should drag the CGPA more than the short, strong Fall 2025 term. Set the scale to &lt;strong&gt;4-point&lt;/strong&gt;, enter the four rows, and calculate. Look at &lt;strong&gt;total credits&lt;/strong&gt; (here, 74) and the CGPA together. If you leave out Spring 2026 “just to see”, you are no longer describing the same degree — you are describing a subset. Be honest about which terms you include.&lt;/p&gt;

&lt;p&gt;If a fifth term is in progress, do not invent an SGPA. Add it when the official result is out, or run a separate what-if sheet with a clearly labelled estimate.&lt;/p&gt;

&lt;p&gt;You can also use the same rows to plan. Suppose you need a 3.50 CGPA and the first three terms are already fixed. Leave those SGPA values as they are, add a fourth row with the credits you expect to take, and try two or three possible SGPAs. The weighted result will tell you whether a modest term is enough or whether the credit load is too large for a small recovery. That is a planning number, not a promise from the examiner.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this will not settle for you
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Failed or repeated courses.&lt;/strong&gt; Institutions differ on whether an old attempt stays in the cumulative figure. Enter what your transcript policy says, not what you wish it said.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transfers and exemptions.&lt;/strong&gt; Confirm with the registrar whether those credits enter the CGPA.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Official standing.&lt;/strong&gt; This is a calculator, not a stamped transcript.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;How is CGPA calculated here?&lt;/strong&gt;&lt;br&gt;
Sum each semester’s SGPA multiplied by that semester’s credits, then divide by the total credits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I export the result?&lt;/strong&gt;&lt;br&gt;
Yes. After calculating, &lt;strong&gt;Export PDF&lt;/strong&gt; and &lt;strong&gt;Export Excel&lt;/strong&gt; are on the result panel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is the percentage different from what my university printed?&lt;/strong&gt;&lt;br&gt;
The tool’s own note says the normalized percentage is a simple scale conversion and may not match an official formula. Use your institution’s conversion when a form requires a percentage.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I build &lt;a href="https://toolsphare.com" rel="noopener noreferrer"&gt;ToolSphare&lt;/a&gt;, the free tools site that hosts the CGPA calculator described above.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
    </item>
    <item>
      <title>Make a Wi-Fi, WhatsApp or vCard QR Code With a Logo — Then Scan It Before You Print</title>
      <dc:creator>Muhammad Wasim</dc:creator>
      <pubDate>Fri, 13 Nov 2026 11:48:26 +0000</pubDate>
      <link>https://dev.to/muhammad_wasim_0868820891/make-a-wi-fi-whatsapp-or-vcard-qr-code-with-a-logo-then-scan-it-before-you-print-cm7</link>
      <guid>https://dev.to/muhammad_wasim_0868820891/make-a-wi-fi-whatsapp-or-vcard-qr-code-with-a-logo-then-scan-it-before-you-print-cm7</guid>
      <description>&lt;p&gt;A QR code on a poster is only useful if it still scans after you add a logo, change the colours, and send the file to a cheap print shop. I have seen café Wi-Fi signs that opened the wrong network, and business cards whose codes were too tight, too dark-on-dark, or buried under a huge mark in the centre.&lt;/p&gt;

&lt;p&gt;The fix is not a fancier generator. It is to encode the right payload, leave enough of the pattern visible, and test the print with two phones.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you can encode
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://toolsphare.com/tools/qr-code-generator" rel="noopener noreferrer"&gt;QR Code Generator on ToolSphare&lt;/a&gt; is a free, no-sign-up workspace that builds the code in your browser. Your URL, Wi-Fi password and logo stay on the device during creation, according to the page. Downloads are PNG, SVG or PDF, with no watermark.&lt;/p&gt;

&lt;p&gt;Content types on the page:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;URL&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Text&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wi-Fi&lt;/strong&gt; — network name (SSID), security (WPA/WPA2/WPA3, WEP, or open), password, hidden-network checkbox&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Event&lt;/strong&gt; — title, start and end, optional location and description&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email&lt;/strong&gt; — address, optional subject and message&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Phone&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SMS&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WhatsApp&lt;/strong&gt; — number with country code and no &lt;code&gt;+&lt;/code&gt;, optional pre-filled message&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;vCard&lt;/strong&gt; — name, company, job title, phone, email, website&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Location&lt;/strong&gt; — latitude and longitude, which opens in maps apps when scanned&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are &lt;strong&gt;static&lt;/strong&gt; codes: the payload is written into the image. If you later change a URL or a Wi-Fi password, you must generate and reprint a new code. The FAQ is explicit that this is not a dynamic generator with editable redirect links or analytics.&lt;/p&gt;

&lt;h2&gt;
  
  
  Customising without breaking the scan
&lt;/h2&gt;

&lt;p&gt;Under &lt;strong&gt;Customize Your QR Code&lt;/strong&gt; you can set:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Foreground and background colours (defaults are a dark foreground on white)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Size&lt;/strong&gt;, default &lt;strong&gt;512px&lt;/strong&gt; (the features list gives a range from 128px to 1024px)&lt;/li&gt;
&lt;li&gt;Module style and corner/eye style&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;logo overlay&lt;/strong&gt;: upload, remove, size (default 22%), and logo shape&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error correction:&lt;/strong&gt; Low (L), Medium (M), Quartile (Q), or &lt;strong&gt;High (H) — best with logo&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quiet zone:&lt;/strong&gt; Small, Normal or Large&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transparent background&lt;/strong&gt; on PNG&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;High error correction is what makes a centre logo viable: part of the pattern can be covered and the code should still read. Square PNG or JPG logos with a simple shape and strong contrast work better than a detailed photograph. The page also warns you, more than once, to scan before you print.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;a href="https://toolsphare.com/tools/qr-code-generator" rel="noopener noreferrer"&gt;QR Code Generator workspace&lt;/a&gt; and choose a content type.&lt;/li&gt;
&lt;li&gt;Fill in only the fields you need. For WhatsApp, use a country code without a plus (for a Pakistani number, that starts with &lt;code&gt;92&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Set colours with strong contrast, keep error correction on High if you add a logo, and start with a modest logo size.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Generate QR Code&lt;/strong&gt;. Use &lt;strong&gt;Scan to test&lt;/strong&gt; in the preview, then also open the camera on a second phone.&lt;/li&gt;
&lt;li&gt;Download PNG for the web, SVG or PDF for print, and keep a copy of the encoded data if you need to regenerate later.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A practical example: a shop Wi-Fi sign and a freelancer’s card
&lt;/h2&gt;

&lt;p&gt;A small shop wants guests on Wi-Fi without typing a long password. Choose &lt;strong&gt;Wi-Fi&lt;/strong&gt;, enter the exact SSID (including capitalisation and spaces), pick WPA/WPA2/WPA3, type the password, and generate at 512px or larger with High error correction. Put a simple logo in the centre at around the default 22%. Print one copy, scan it from a metre away and from an angle. If the camera hesitates, shrink the logo, enlarge the quiet zone, or go back to black on white.&lt;/p&gt;

&lt;p&gt;A freelancer adding a contact code to a visiting card should use &lt;strong&gt;vCard&lt;/strong&gt;, not a blurry photo of a business card. Fill name, title, phone, email and site, add the same logo, and export SVG or PDF so the code stays sharp at a small print size. Test the scan on Android and iPhone if you can. The phone should offer to save the contact, not open a broken URL.&lt;/p&gt;

&lt;p&gt;For a WhatsApp enquiry button on a poster, use the WhatsApp tab with a pre-filled message such as “Hello, I saw your ad.” Again, print only after a live scan.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Can I put a logo in the middle?&lt;/strong&gt;&lt;br&gt;
Yes. Upload a square logo; the tool places it in the centre. Use High (H) error correction, and do not let the logo dominate the pattern.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is this a dynamic QR code?&lt;/strong&gt;&lt;br&gt;
No. The code contains the final data. There is no hosted redirect you can edit later, and no built-in scan analytics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are Wi-Fi passwords uploaded?&lt;/strong&gt;&lt;br&gt;
The page says generation happens in your browser and that data and logos stay local during creation.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I build &lt;a href="https://toolsphare.com" rel="noopener noreferrer"&gt;ToolSphare&lt;/a&gt;, the free tools site that hosts the QR generator described above.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>design</category>
      <category>marketing</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Count Words and Characters Before You Submit, Not After the Portal Rejects the File</title>
      <dc:creator>Muhammad Wasim</dc:creator>
      <pubDate>Fri, 13 Nov 2026 11:47:52 +0000</pubDate>
      <link>https://dev.to/muhammad_wasim_0868820891/count-words-and-characters-before-you-submit-not-after-the-portal-rejects-the-file-50nc</link>
      <guid>https://dev.to/muhammad_wasim_0868820891/count-words-and-characters-before-you-submit-not-after-the-portal-rejects-the-file-50nc</guid>
      <description>&lt;p&gt;Word limits look simple until a form counts spaces and your editor does not, or until a 1,000-word assignment is 1,140 in one tool and 999 in another because of hyphens and footnotes. The boring habit that prevents a last-minute panic is to count the text in the same way the recipient will, before you hit submit.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this counter actually shows
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://toolsphare.com/tools/word-counter" rel="noopener noreferrer"&gt;Word Counter on ToolSphare&lt;/a&gt; is a single box labelled &lt;strong&gt;Your Text&lt;/strong&gt;, with the placeholder “Paste or type your text here…”. There is no sign-up and no run button: the totals update as you type.&lt;/p&gt;

&lt;p&gt;Above or beside the box you get six figures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Words&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Characters&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chars (no spaces)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sentences&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Paragraphs&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reading time&lt;/strong&gt; in minutes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That split between characters with and without spaces is the one students and civil-service applicants in Pakistan bump into most often. Some portals and SMS-style fields cap &lt;strong&gt;characters including spaces&lt;/strong&gt;. Others want a word count only. A Twitter-era habit of staring at one number does not help when the form cares about the other.&lt;/p&gt;

&lt;p&gt;Reading time is a planning figure, not a promise of how long a teacher will spend on your essay. Use it to sense whether a blog post or a proposal is getting long, not as a scientific measure of comprehension.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;a href="https://toolsphare.com/tools/word-counter" rel="noopener noreferrer"&gt;Word Counter workspace&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Paste the draft, or type directly in the box.&lt;/li&gt;
&lt;li&gt;Read the word count if you are aiming at an assignment limit, and the character counts if the form specifies a maximum length.&lt;/li&gt;
&lt;li&gt;Trim in your editor, paste again, and stop when you are under the limit with a small margin.&lt;/li&gt;
&lt;li&gt;If the work is confidential, remember that you are pasting it into a browser page. The tool runs as a free, no-account text utility; do not treat a public computer as a safe place to paste a client contract.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A practical example: a 1,000-word assignment and a 500-character personal statement
&lt;/h2&gt;

&lt;p&gt;An undergraduate assignment asks for 1,000 words, plus or minus 10%. You paste the body of the essay (not the cover page, not the bibliography, unless the department counts them). The counter shows 1,180 words, 12 paragraphs, and a reading time of several minutes.&lt;/p&gt;

&lt;p&gt;You now know you are over, and you can see whether the problem is one bloated section (a long paragraph count in a short word hike usually means a few dense blocks) or the whole piece. You cut examples, paste again, and stop at around 1,050 so a later footnote does not push you over.&lt;/p&gt;

&lt;p&gt;The same afternoon, a scholarship form allows 500 characters for a personal statement. Words are the wrong figure here. Watch &lt;strong&gt;Characters&lt;/strong&gt;, and glance at &lt;strong&gt;Chars (no spaces)&lt;/strong&gt; only if the instructions say to exclude spaces — most web forms include them. Draft in the counter, or paste after each edit, until you are a little under 500. Then paste into the form and confirm that its own counter agrees. If it does not, trust the form and adjust.&lt;/p&gt;

&lt;p&gt;Freelancers can use the same box to estimate a delivery: many clients still pay or brief “around 800 words”. Paste the draft, check the word count, and be honest when a piece has run long.&lt;/p&gt;

&lt;h2&gt;
  
  
  Small counting pitfalls
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Footnotes, captions and references.&lt;/strong&gt; Decide whether they are in scope before you paste.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bullet lists.&lt;/strong&gt; They still contain words. A tight list can hide a surprising count.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Copied web text.&lt;/strong&gt; Hidden characters and repeated headings from a webpage will inflate the numbers. Paste into a plain box, then count.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Different languages and numerals.&lt;/strong&gt; If you mix English and Urdu in one box, still look at the same totals the form will use, and follow the form’s language rules.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;Does the count update as I type?&lt;/strong&gt;&lt;br&gt;
Yes. The workspace is a text box with live totals. There is no separate submit step.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the difference between Characters and Chars (no spaces)?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Characters&lt;/strong&gt; includes spaces. &lt;strong&gt;Chars (no spaces)&lt;/strong&gt; does not. Use the one the form describes, and if the form is unclear, assume spaces count.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is an account required?&lt;/strong&gt;&lt;br&gt;
No. The page describes the tool as free, with no sign-up and no daily limit for the core workflow.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I build &lt;a href="https://toolsphare.com" rel="noopener noreferrer"&gt;ToolSphare&lt;/a&gt;, the free tools site that hosts the word counter described above.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>writing</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Summarise a Long Article in Your Browser — Without Sending the Text to an AI Server</title>
      <dc:creator>Muhammad Wasim</dc:creator>
      <pubDate>Fri, 13 Nov 2026 11:41:48 +0000</pubDate>
      <link>https://dev.to/muhammad_wasim_0868820891/summarise-a-long-article-in-your-browser-without-sending-the-text-to-an-ai-server-249i</link>
      <guid>https://dev.to/muhammad_wasim_0868820891/summarise-a-long-article-in-your-browser-without-sending-the-text-to-an-ai-server-249i</guid>
      <description>&lt;p&gt;When a reading list piles up — a policy brief, a 20-page report, a long news feature — the temptation is to paste the lot into a chatbot and hope. That is sometimes fine. It is a bad idea when the document is an unpublished assignment, a client report, or anything you do not want sitting on someone else’s server.&lt;/p&gt;

&lt;p&gt;There is a quieter option: an &lt;strong&gt;extractive&lt;/strong&gt; summarizer that runs locally and returns sentences that were already in the text.&lt;/p&gt;

&lt;h2&gt;
  
  
  Extractive is not the same as a chatbot
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://toolsphare.com/tools/text-summarizer" rel="noopener noreferrer"&gt;Text Summarizer on ToolSphare&lt;/a&gt; is labelled as an extractive TL;DR engine. It does not rewrite the article in a new voice. It scores sentences and keeps the ones that look most central.&lt;/p&gt;

&lt;p&gt;The page describes the method in plain terms: term frequency–inverse document frequency (TF-IDF), sentence-position weighting, and extraction of the highest-scoring sentences, all in your browser. Your drafts and reports are not uploaded to a server. There is no character quota and no account.&lt;/p&gt;

&lt;p&gt;That design has a consequence. The summary will sound like the original, because it &lt;em&gt;is&lt;/em&gt; pieces of the original. If the article buries the conclusion, or if the key number appears in a table rather than a sentence, the summary may miss it. Treat the output as a briefing, then go back to the source for anything you will cite or rely on.&lt;/p&gt;

&lt;h2&gt;
  
  
  The two controls that change the result
&lt;/h2&gt;

&lt;p&gt;At the top of the workspace:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Length&lt;/strong&gt;, a slider defaulting to &lt;strong&gt;30%&lt;/strong&gt;. The how-to on the page describes a range from &lt;strong&gt;15%&lt;/strong&gt; (short TL;DR) to &lt;strong&gt;50%&lt;/strong&gt; (more detailed).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Format:&lt;/strong&gt; &lt;strong&gt;Paragraphs&lt;/strong&gt; or &lt;strong&gt;Bullet Points&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can paste text, click &lt;strong&gt;Load Sample Article&lt;/strong&gt;, or &lt;strong&gt;Upload .TXT&lt;/strong&gt;. Word and character counts for the original sit above the box. After you click &lt;strong&gt;Summarize&lt;/strong&gt;, you get an executive summary you can &lt;strong&gt;Copy&lt;/strong&gt; or &lt;strong&gt;Download .txt&lt;/strong&gt;, plus three metrics: summary length in words, content reduction as a percentage, and reading time saved.&lt;/p&gt;

&lt;p&gt;If the first pass is too thin, move the slider up and run it again. If it is still a wall of prose, switch to bullet points. Change one setting at a time so you can see what helped.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;a href="https://toolsphare.com/tools/text-summarizer" rel="noopener noreferrer"&gt;Text Summarizer workspace&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Paste the article, report or transcript, or upload a &lt;code&gt;.txt&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;Set the length slider (start at 30%) and pick paragraphs or bullets.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Summarize&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Read the summary against the original’s introduction and conclusion. Copy or download it only after that check.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A practical example: a long assigned article
&lt;/h2&gt;

&lt;p&gt;A university student has a 3,000-word commentary to read before class and twenty minutes on a bus. They paste the article into the summarizer, keep 30% and bullet points, and get a short list of the main claims.&lt;/p&gt;

&lt;p&gt;That list is useful for orientation: what the author is arguing, which terms keep recurring, where the piece is going. It is not a substitute for the examples or the caveats that lived in the middle paragraphs. Before class, the student skims those sections in the original, then keeps the bullet file as a memory aid. If they write a response, they quote the source, not the summary.&lt;/p&gt;

&lt;p&gt;A freelancer can use the same flow on a client’s long brief: 15% bullets to see the deliverables, then a slower read of any section the summary flagged only in passing (deadlines, payment terms, out-of-scope work). Those details are often in short sentences that a frequency-based scorer may not rank highly.&lt;/p&gt;

&lt;h2&gt;
  
  
  When not to trust the first pass
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dialogue-heavy transcripts.&lt;/strong&gt; Important decisions may be spoken once, in plain language, and lose the TF-IDF contest to a repeated topic word.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Math, code and tables.&lt;/strong&gt; If the point is in a figure, extractive sentence scoring cannot see it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Texts you need to rewrite.&lt;/strong&gt; This tool will not paraphrase. It will only select.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anything you have not been given permission to paste into a tool.&lt;/strong&gt; Local processing is a privacy improvement, not a copyright exemption.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;Does the text leave my computer?&lt;/strong&gt;&lt;br&gt;
The tool page says processing is client-side and that drafts, essays and reports are never uploaded to any server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there a word limit?&lt;/strong&gt;&lt;br&gt;
The FAQ says no: you can paste short articles or full-length documents without a quota.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does the summary repeat sentences from the article?&lt;/strong&gt;&lt;br&gt;
Because it is extractive. It ranks and keeps existing sentences rather than generating new ones. If you need a rewritten abstract, that is a different kind of tool.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I build &lt;a href="https://toolsphare.com" rel="noopener noreferrer"&gt;ToolSphare&lt;/a&gt;, the free tools site that hosts the summarizer described above.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>writing</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Generate a Strong Password You Will Not Reuse — Then Put It in a Manager</title>
      <dc:creator>Muhammad Wasim</dc:creator>
      <pubDate>Fri, 13 Nov 2026 11:41:14 +0000</pubDate>
      <link>https://dev.to/muhammad_wasim_0868820891/generate-a-strong-password-you-will-not-reuse-then-put-it-in-a-manager-p3m</link>
      <guid>https://dev.to/muhammad_wasim_0868820891/generate-a-strong-password-you-will-not-reuse-then-put-it-in-a-manager-p3m</guid>
      <description>&lt;p&gt;The weakest password I still see in circulation is a favourite word, a birth year, and maybe an exclamation mark — then the same string on email, banking and a freelance marketplace. When one site leaks, the rest are open.&lt;/p&gt;

&lt;p&gt;A generator does not make you secure by itself. It gives you a long, random string you can afford to forget, because a password manager remembers it. That is the habit worth practising.&lt;/p&gt;

&lt;h2&gt;
  
  
  What “strong” means on this page
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://toolsphare.com/tools/password-generator" rel="noopener noreferrer"&gt;Password Generator on ToolSphare&lt;/a&gt; builds random passwords in your browser. The page states that it uses cryptographic randomness locally, that you do not need an account, and that there is no limit on how many you can create.&lt;/p&gt;

&lt;p&gt;You can see the controls clearly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Length&lt;/strong&gt;, default &lt;strong&gt;16&lt;/strong&gt;, adjustable from &lt;strong&gt;4 to 128&lt;/strong&gt; with a slider or a number box&lt;/li&gt;
&lt;li&gt;Character sets: &lt;strong&gt;uppercase A–Z&lt;/strong&gt;, &lt;strong&gt;lowercase a–z&lt;/strong&gt;, &lt;strong&gt;numbers 0–9&lt;/strong&gt;, &lt;strong&gt;symbols&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exclude similar&lt;/strong&gt; characters: &lt;code&gt;i, l, 1, L, o, 0, O&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Number of passwords&lt;/strong&gt; at once: 1, 3, 5 or 10&lt;/li&gt;
&lt;li&gt;Advanced: &lt;strong&gt;exclude characters&lt;/strong&gt;, &lt;strong&gt;include space&lt;/strong&gt;, &lt;strong&gt;avoid ambiguous punctuation&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After you click &lt;strong&gt;Generate Password&lt;/strong&gt;, you get the string, &lt;strong&gt;Copy&lt;/strong&gt; and &lt;strong&gt;New&lt;/strong&gt; buttons, a &lt;strong&gt;strength&lt;/strong&gt; reading, and a checklist (at least 12 characters, mixed case, numbers, symbols, “strong password”). A &lt;strong&gt;password history&lt;/strong&gt; panel stores earlier results &lt;strong&gt;only on this device&lt;/strong&gt;, with a &lt;strong&gt;Clear all&lt;/strong&gt; button.&lt;/p&gt;

&lt;p&gt;The tips on the page are the ones that matter: use at least 12–16 characters, mix letters, numbers and symbols, avoid personal information, use a unique password per site, and store secrets in a password manager.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;a href="https://toolsphare.com/tools/password-generator" rel="noopener noreferrer"&gt;Password Generator workspace&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Set the length. Sixteen is a solid default; use more for email, banking or the manager’s master-adjacent accounts if a site allows it.&lt;/li&gt;
&lt;li&gt;Leave letters, numbers and symbols on unless a site forbids symbols — some older portals still do.&lt;/li&gt;
&lt;li&gt;Turn on &lt;strong&gt;Exclude similar&lt;/strong&gt; if you will ever have to type the password from a printed note or a phone screen. Turn on &lt;strong&gt;Avoid ambiguous punctuation&lt;/strong&gt; if the site has a picky character list.&lt;/li&gt;
&lt;li&gt;If a site rejects &lt;code&gt;$&lt;/code&gt; or &lt;code&gt;!&lt;/code&gt;, put those characters in &lt;strong&gt;Exclude characters&lt;/strong&gt; and generate again, rather than editing the password by hand and accidentally making it weaker.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Generate Password&lt;/strong&gt;, copy it &lt;strong&gt;straight into a password manager&lt;/strong&gt;, then into the site. Do not paste it into a chat or an email to yourself.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A practical example: a freelance marketplace and a bank login
&lt;/h2&gt;

&lt;p&gt;You are opening an Upwork or Fiverr account and a new internet-banking login. Both deserve unique passwords. Neither should be a variation of your email password.&lt;/p&gt;

&lt;p&gt;For the marketplace, generate a 16-character password with all four character sets and similar characters excluded, so you can retype it if you ever have to. Save it in the manager under that site’s name. For the bank, generate a &lt;strong&gt;different&lt;/strong&gt; 20-character password. If the bank’s form rejects spaces and a couple of symbols, exclude those and generate a fresh string — do not delete characters from the first one until it “looks easier”.&lt;/p&gt;

&lt;p&gt;If you need a few options to see which a form will accept, set &lt;strong&gt;Number of passwords&lt;/strong&gt; to 5, generate once, and pick one. Clear the on-page history when you are done, especially on a shared computer. History is local, but it is still on that device until you clear it.&lt;/p&gt;

&lt;p&gt;A generator is a poor place to store the only copy of a password. If you close the tab without saving the string in a manager, it is gone. That is by design.&lt;/p&gt;

&lt;h2&gt;
  
  
  What not to do
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Do not reuse the same generated password on a second site because it was “already strong”.&lt;/li&gt;
&lt;li&gt;Do not add your name or a year on the end to “make it memorable”.&lt;/li&gt;
&lt;li&gt;Do not email passwords to colleagues. Share them through the manager’s sharing feature, or not at all.&lt;/li&gt;
&lt;li&gt;Do not generate a 4-character password just because the slider allows 4. The checklist flags 12 as a minimum for a reason.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;Is the password sent to a server?&lt;/strong&gt;&lt;br&gt;
The page describes generation as using cryptographic randomness locally, in your browser. History, when enabled, stays on the device. You should still avoid generating passwords on a public computer you do not control.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why exclude similar characters?&lt;/strong&gt;&lt;br&gt;
Because &lt;code&gt;l&lt;/code&gt;, &lt;code&gt;1&lt;/code&gt;, &lt;code&gt;I&lt;/code&gt;, &lt;code&gt;0&lt;/code&gt; and &lt;code&gt;O&lt;/code&gt; are easy to mix up when you type from a screen or a notebook. Excluding them does not make a 16-character password weak; it makes it less annoying to type.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I generate more than one at a time?&lt;/strong&gt;&lt;br&gt;
Yes. The &lt;strong&gt;Number of passwords&lt;/strong&gt; control offers 1, 3, 5 or 10 in one go.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I build &lt;a href="https://toolsphare.com" rel="noopener noreferrer"&gt;ToolSphare&lt;/a&gt;, the free tools site that hosts the generator described above.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>passwords</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
