Most of my projects come from something simple: I want a tool I can run instantly without thinking about it. There are dozens of password generators out there, but they all seem to come with something I do not actually want. Ads, web dependencies, browser plugins, sync features, cloud integrations, or huge interfaces that do far more than generate a string of random characters.

So I built my own: a tiny desktop password generator written in Python with Tkinter.

Below is a screenshot of the tool:

Password Generator Screenshot

Why I Built It

I wanted a password generator that was:

  • local only
  • minimal UI
  • no clipboard monitoring
  • no browser tie-in
  • no surprises
  • no analytics
  • and no "premium" or "upgrade" buttons

Basically, I wanted the old-school utility feel. A tiny box. A few checkboxes. A button that spits out a password. Done.

Modern tools tend to bury the simple case under a lot of features. I wanted the opposite, something that could have existed twenty years ago and would still do the job.

What It Does

The interface is simple:

  • choose length
  • check the character sets you want
  • generate
  • copy the result

The character sets include:

  • lowercase letters
  • uppercase letters
  • digits
  • punctuation
  • optional exclusion of visually confusing characters like 0, O, 1, l, I

Everything is built on standard library modules. No external GUIs, no dependencies beyond basic Python and Tkinter. If you can run a simple .pyw file, you can run this app.

A Few Notes About the Design

I deliberately kept the layout simple. A single small window, a single generate button, and a copy-to-clipboard button. The window does not resize. The widget count is tiny. The code is written for clarity, not cleverness.

Tkinter was perfect for this. Lightweight, dependable, and available everywhere. Python was even better. Most of the time spent on this project was trimming things out so the program stayed small.

Who This Is For

Honestly, mostly for me. But it is the kind of tool other developers tend to appreciate:

  • people who like offline utilities
  • people who prefer no dependencies
  • people who enjoy small software
  • people who want to see a working Tkinter example
  • people who like to tinker with simple codebases

Small code invites modification.

What I Might Add Later

Maybe:

  • a CLI companion script
  • a dark mode toggle
  • pattern-based generation
  • automatic strength scoring
  • export to a tiny .exe using PyInstaller

Or maybe I will leave it exactly as it is.

Final Thoughts

gen-password is the kind of project I like to do between bigger ones. A tiny tool that solves a small need, teaches nothing dramatic, but reminds me why building software can be fun.

And sometimes that is enough.