Generate .gitignore files for any project. Pre-built templates for Node.js, Python, React, Java, Go, Rust, and 50+ more technologies.
Initializing in your browser…
Generate realistic fake data for testing and development. Create names, usernames, emails, addresses, phone numbers, and more. Export to JSON or CSV format
Generate passwords from the Web Crypto generator by rejection sampling, with the entropy stated exactly from the alphabet, the cost of every rule computed, and crack times against four named attacker models
Design complex box shadows with multi-layer support, inset shadows, visibility toggle, layer reordering, opacity control, and 12 professional presets
Pick your languages, frameworks, and IDEs, and get a ready-to-use .gitignore file. Covers common patterns for Node.js, Python, Java, Go, Rust, .NET, and dozens of editors and operating systems.
This is a template-assembly tool: it ships 52 hand-curated .gitignore blocks grouped into categories (JavaScript, Python, Java/JVM, Go, Rust, C/C++, Ruby, PHP, Mobile, DevOps, Data Science, Other Languages, IDE, and OS) and concatenates the ones you pick into a single file. You select stacks by toggling chips, and the output is built by stacking each template's content under an uppercased banner comment (e.g. # ========= / # NODE.JS / # =========), preceded by a header that credits the generator and links back to loopaloo.com/tools/gitignore-generator. Selection is order-preserving and not deduplicated, so combining, say, Node.js and Next.js will list node_modules/ in both blocks rather than merging them. A free-form Custom Rules textarea is appended verbatim under a final # CUSTOM RULES banner.
Six one-click presets compose common stacks for you: Modern Frontend (node, nextjs, vscode, macos), Python Backend (python, django, docker, vscode, macos), Full Stack JS (node, react, docker, vscode, macos), Mobile App (reactnative, android, ios, vscode, macos), DevOps (terraform, docker, kubernetes, ansible, vscode), and Data Science (python, jupyter, datascience, vscode, macos). A search box filters templates by name, category, or id, and a Popular toggle narrows the list to the starred entries (Node.js, React, Next.js, Vue, Python, Django, Java, Go, Rust, Rails, Laravel, Android, React Native, Terraform). The templates themselves encode real Git negation patterns rather than blanket ignores - for example the Node block does .vscode/* then re-includes !.vscode/settings.json and !.vscode/extensions.json, and uses .env.* with !.env.example; similarly Android keeps !debug.keystore, iOS keeps !Podfile.lock, Gradle keeps !gradle/wrapper/gradle-wrapper.jar, and Maven keeps !.mvn/wrapper/maven-wrapper.jar so the build wrapper stays committed.
Several templates deliberately ship optional lines commented out so you can opt in: the Node, Go, Poetry, and Data Science blocks leave package-lock.json/yarn.lock, vendor/, poetry.lock, and data files like # *.csv, # *.parquet, # models/ as # comments to uncomment if your project wants them ignored. Everything runs entirely in the browser - Copy writes the assembled text to the clipboard, Download creates a Blob and saves it as a file literally named .gitignore, and Clear empties the selection and custom rules. Your current selection and the Popular toggle are encoded into the page URL (templates as a comma-separated list of ids), so the Share button produces a link that reproduces the exact same set of templates for a teammate without any server-side storage.
Generate a comprehensive .gitignore before your first commit so build artifacts and editor files never enter the repo.
Combine patterns for multiple languages and tools into a single .gitignore.
Compare your current .gitignore against the recommended patterns for your stack to catch missing entries.
In the root of your repository. You can also place additional .gitignore files in subdirectories to override patterns for that subtree.
Adding it to .gitignore won't remove it from tracking. Run "git rm --cached <file>" first, then commit.
This runs as client-side JavaScript. Keys, tokens, payloads, and other inputs never leave your device.