Skip to content

Commit 36fd349

Browse files
authored
Merge pull request #116 from jamdotdev/petar/rename-password-generator
chore: rename password generator
2 parents 3dbcf65 + ef17d86 commit 36fd349

File tree

4 files changed

+117
-109
lines changed

4 files changed

+117
-109
lines changed

components/seo/PasswordGeneratorSEO.tsx

Lines changed: 0 additions & 92 deletions
This file was deleted.
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
export default function RandomStringGeneratorSEO() {
2+
return (
3+
<div className="content-wrapper">
4+
<section>
5+
<p>
6+
Generate cryptographically secure random strings instantly with this
7+
free online random string generator. Whether you&apos;re creating API
8+
keys, tokens, or secure identifiers, Jam&apos;s Random String
9+
Generator creates strong, randomized strings with password-like
10+
structure to keep your applications secure.
11+
</p>
12+
</section>
13+
14+
<section>
15+
<h2>How to Use Jam&apos;s Random String Generator</h2>
16+
<p>
17+
Quickly create a cryptographically strong random string tailored to
18+
your needs. Follow these simple steps:
19+
</p>
20+
<ul>
21+
<li>
22+
<b>Select options:</b> <br /> Choose to include lowercase,
23+
uppercase, numbers, and/or symbols.
24+
</li>
25+
<li>
26+
<b>Set length:</b> <br /> Pick a string length (4-128 characters).
27+
</li>
28+
<li>
29+
<b>Generate:</b> <br /> Click &quot;Generate Random String&quot; to
30+
instantly get a cryptographically secure random string.
31+
</li>
32+
<li>
33+
<b>Copy:</b> <br /> Copy your generated string safely with one
34+
click.
35+
</li>
36+
</ul>
37+
</section>
38+
39+
<section>
40+
<h2>Why use a Random String Generator?</h2>
41+
<p>
42+
Manually created strings are often predictable and easy to guess. A
43+
random string generator helps you avoid common patterns and ensures
44+
your generated strings are cryptographically secure.
45+
</p>
46+
<ul>
47+
<li>
48+
<b>Security:</b> <br /> Random, unpredictable strings are harder to
49+
crack or guess.
50+
</li>
51+
<li>
52+
<b>Customization:</b> <br /> Adjust the length and character sets to
53+
meet your application requirements.
54+
</li>
55+
<li>
56+
<b>Convenience:</b> <br /> Generate reliable random strings
57+
instantly, perfect for API keys, tokens, or secure identifiers.
58+
</li>
59+
</ul>
60+
</section>
61+
62+
<section>
63+
<h2>FAQs</h2>
64+
<ul>
65+
<li>
66+
<b>Is this random string generator free?</b> <br /> Yes. It&apos;s
67+
free, open-source, and ad-free.
68+
</li>
69+
<li>
70+
<b>Are the generated strings stored?</b> <br />
71+
No. All jam.dev/utilities are local-only browser tools that work
72+
entirely without any backend. Your random strings are generated in
73+
your browser and never leave your device.
74+
</li>
75+
<li>
76+
<b>How long should my random string be?</b> <br /> For strong
77+
security, use at least 12 characters. For maximum protection, 20+
78+
characters are recommended.
79+
</li>
80+
<li>
81+
<b>What can I use these strings for?</b> <br />
82+
Perfect for API keys, tokens, session IDs, secret keys, or any
83+
secure identifier in your applications.
84+
</li>
85+
<li>
86+
<b>How secure are the generated strings?</b> <br /> They are
87+
generated using cryptographically secure random values, making them
88+
highly resistant to prediction and brute-force attacks.
89+
</li>
90+
</ul>
91+
</section>
92+
</div>
93+
);
94+
}

components/utils/tools-list.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,9 +156,9 @@ export const tools = [
156156
link: "/utilities/internet-speed-test",
157157
},
158158
{
159-
title: "Password Generator",
159+
title: "Random String Generator",
160160
description:
161-
"Mix uppercase, lowercase, numbers, and symbols to generate bulletproof passwords that will keep your accounts safe.",
161+
"Generate cryptographically secure random strings with configurable character sets. Perfect for API keys, tokens, passwords, and secure identifiers.",
162162
link: "/utilities/password-generator",
163163
},
164164
];

pages/utilities/password-generator.tsx renamed to pages/utilities/random-string-generator.tsx

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ import CallToActionGrid from "@/components/CallToActionGrid";
1212
import Meta from "@/components/Meta";
1313
import { Input } from "@/components/ds/InputComponent";
1414
import { PasswordBuilder } from "@/components/utils/password-generator.utils";
15-
import PasswordGeneratorSEO from "@/components/seo/PasswordGeneratorSEO";
15+
import RandomStringGeneratorSEO from "@/components/seo/RandomStringGeneratorSEO";
1616
import GitHubContribution from "@/components/GitHubContribution";
1717
import { cn } from "@/lib/utils";
1818

1919
export default function PasswordGenerator() {
20-
const [password, setPassword] = useState("");
20+
const [generatedString, setGeneratedString] = useState("");
2121
const [length, setLength] = useState<number>(16);
2222
const [includeLowercase, setIncludeLowercase] = useState<boolean>(true);
2323
const [includeUppercase, setIncludeUppercase] = useState<boolean>(true);
@@ -26,15 +26,15 @@ export default function PasswordGenerator() {
2626
const { buttonText, handleCopy } = useCopyToClipboard();
2727
const outputRef = useRef<HTMLTextAreaElement | null>(null);
2828

29-
const generatePassword = useCallback(() => {
29+
const generateRandomString = useCallback(() => {
3030
const builder = new PasswordBuilder(
3131
includeLowercase,
3232
includeUppercase,
3333
includeNumbers,
3434
includeSymbols,
3535
length
3636
);
37-
setPassword(builder.Build());
37+
setGeneratedString(builder.Build());
3838
}, [
3939
includeLowercase,
4040
includeUppercase,
@@ -75,15 +75,15 @@ export default function PasswordGenerator() {
7575
return (
7676
<main>
7777
<Meta
78-
title="Password Generator | Free, Open Source & Ad-free"
79-
description="Generate strong and secure passwords instantly with Jam's free online Password Generator. Choose your preferences or use all options by default — uppercase letters, lowercase letters, numbers, and special characters — and get a reliable password in one click. That's it."
78+
title="Random String Generator | Free, Open Source & Ad-free"
79+
description="Generate cryptographically strong random strings with password-like structure instantly with Jam's free online Random String Generator. Choose your preferences or use all options by default — uppercase letters, lowercase letters, numbers, and special characters — and get a reliable random string in one click. That's it."
8080
/>
8181
<Header />
8282
<CMDK />
8383

8484
<section className="container max-w-2xl mb-12">
8585
<PageHeader
86-
title="Password Generator"
86+
title="Random String Generator"
8787
description="Fast, free, open source, ad-free tools."
8888
/>
8989
</section>
@@ -147,7 +147,7 @@ export default function PasswordGenerator() {
147147
</div>
148148

149149
<div className="text-sm">
150-
<Label className="mb-2">Password strength:</Label>
150+
<Label className="mb-2">String complexity:</Label>
151151

152152
<div className="bg-muted text-foreground h-8 rounded-md items-center flex px-3 font-medium gap-1.5">
153153
<div
@@ -164,30 +164,36 @@ export default function PasswordGenerator() {
164164
<div className="h-[1px] bg-border"></div>
165165

166166
<div className="flex flex-col">
167-
<Button onClick={generatePassword}>Generate</Button>
167+
<Button onClick={generateRandomString}>Generate</Button>
168168
</div>
169169

170170
<div className="h-[1px] bg-border"></div>
171171

172172
<div>
173173
<div className="mb-2 flex justify-between items-center">
174-
<Label className="mb-0">Password</Label>
174+
<Label className="mb-0">Generated String</Label>
175175
</div>
176176

177177
<Textarea
178-
value={password}
178+
value={generatedString}
179179
readOnly
180180
rows={2}
181181
ref={outputRef}
182182
className="mb-4"
183-
placeholder="Click 'Generate' to create a secure password."
183+
placeholder="Click 'Generate' to create a cryptographically strong random string."
184184
/>
185185

186186
<div className="flex gap-2 justify-between">
187-
<Button variant="outline" onClick={() => handleCopy(password)}>
187+
<Button
188+
variant="outline"
189+
onClick={() => handleCopy(generatedString)}
190+
>
188191
{buttonText}
189192
</Button>
190-
<Button variant="outline" onClick={() => setPassword("")}>
193+
<Button
194+
variant="outline"
195+
onClick={() => setGeneratedString("")}
196+
>
191197
Clear
192198
</Button>
193199
</div>
@@ -200,7 +206,7 @@ export default function PasswordGenerator() {
200206
<CallToActionGrid />
201207

202208
<section className="container max-w-2xl">
203-
<PasswordGeneratorSEO />
209+
<RandomStringGeneratorSEO />
204210
</section>
205211
</main>
206212
);

0 commit comments

Comments
 (0)