A free browser-based tool to generate ESLint 9 flat configuration files (eslint.config.js) for React, Next.js, Vue, Node.js, and Vanilla JS projects. Supports TypeScript, Prettier integration, and Recommended / Strict / Minimal rule presets — no signup required.

ESLint Flat Config Generator is a free, browser-based tool that generates valid eslint.config.js files for modern JavaScript and TypeScript projects. Pick your framework, toggle TypeScript and Prettier, choose a rule preset, and copy or download a ready-to-use flat config in under a minute — no signup, no install.
ESLint 9 introduced a new configuration system called "flat config." The old .eslintrc.* format is deprecated. Every project now needs an eslint.config.js (or .mjs) file — and the new format is fundamentally different from what most developers have been copying from Stack Overflow for years.
The flat config format uses ES module imports, explicit plugin registration, and a different shape for language options and rules. A typical React TypeScript project needs:
@eslint/js for the base recommended rulestypescript-eslint with its own plugin and parsereslint-plugin-react-hooks for React-specific ruleseslint-plugin-react-refresh for Vite/Rollup setupseslint-config-prettier to disable formatting rules that conflict with Prettierfiles globsGetting the import paths wrong, the plugin names wrong, or the parserOptions shape wrong produces cryptic errors. Developers spend 30–60 minutes on a config that should take 2.
Select from five targets: React, Next.js, Vue, Node.js, and Vanilla JS. The generator includes the right plugins and globals for each:
eslint-plugin-react-hooks and eslint-plugin-react-refresh with globals.browser@next/eslint-plugin-next core-web-vitals config and both globals.browser and globals.nodeeslint-plugin-vue with vue-eslint-parser and .vue file glob patternsglobals.node and excludes browser-specific rulesEnable TypeScript to switch the entire config to use typescript-eslint's tseslint.config() wrapper. This automatically adds the TypeScript parser, the @typescript-eslint plugin, and the correct parserOptions with projectService: true for type-aware linting rules.
Three presets let you calibrate strictness:
js.configs.recommended or tseslint.configs.recommended. Safe defaults that catch real bugs without being noisy. Good for most projects.tseslint.configs.strictTypeChecked and stylisticTypeChecked, or js.configs.all for JS projects. Best for new codebases or teams that want maximum coverage.Toggle Prettier to append eslint-config-prettier at the end of the config. This disables all ESLint formatting rules that would conflict with Prettier's output — the correct way to use both tools together in 2025.
The generated config includes a ready-to-copy npm install --save-dev command at the top listing every required package for the chosen options. No more hunting through documentation to find which packages a config needs.
typescript-eslint integration with type-aware ruleseslint-config-prettiernpm install command for chosen optionseslint.config.jsuseMemo over a pure function, zero API callsThe config generator is a pure function: given a ConfigOptions object (framework, typescript, prettier, preset), it returns a string of valid JavaScript. No templating engine, no eval — just string concatenation with a small number of well-defined code paths.
This makes the generator deterministic: the same options always produce the same output, and the output is fully testable without a browser. The UI is just a wrapper that feeds options into the function and displays the result.
The generated configs follow ESLint's official flat config documentation:
tseslint.config() wrapper (not the raw array format) for correct merging of multiple configsparserOptions.projectService: true format is used (not the deprecated project: ["./tsconfig.json"] path-based format)react-hooks, not reactHooks)globals are spread into languageOptions.globals, not the deprecated top-level env field{ ignores: [...] } object format, not .eslintignoreYou've run create-next-app or npm create vite@latest and need a proper ESLint config. Instead of copying from a tutorial that may be using the old .eslintrc format, open the generator, select your framework, and download eslint.config.js in 30 seconds.
.eslintrc to Flat ConfigESLint 9 still supports the old format via a compatibility utility, but migrating fully to flat config is recommended. Use the generator to produce the target flat config, then diff against your current rules to identify what you need to preserve.
If you work at an agency or consultancy and set up multiple projects per month, the generator removes the time spent on boilerplate config. Framework + TypeScript + Prettier: download, done.
The generated config includes clear imports, explicit plugin registration, and inline comments. It is a readable starting point for developers learning how flat config works — easier to understand than documentation alone.
When upgrading an existing project to ESLint 9, comparison against a known-good generated config is useful for identifying what changed or was misconfigured in the migration.
.eslintrc formatreactHooks or react-hooks as the plugin keyeslint --initeslint --init doesn't add Prettier configESLint Flat Config Generator removes the friction from ESLint 9 adoption:
eslint.config.js, not .eslintrcnpm install, lintTry it now: eslint-flat-config-generator.tools.jagodana.com
The client needed a robust developer tools solution that could scale with their growing user base while maintaining a seamless user experience across all devices.
We built a modern application using ESLint and JavaScript, focusing on performance, accessibility, and a delightful user experience.
Category
Developer Tools
Technologies
Date
June 2026
More work in Developer Tools