Open-source project
arunbhardwaj/LeetHub-2.0 avatar
arunbhardwaj/LeetHub-2.0

LeetHub 2.0 commits your solutions when the LeetCode tests pass

Automatically sync your leetcode solutions to your github account - with some updates to keep it working

806 stars223 forksJavaScriptMIT

At a glance

What is it?
LeetHub 2.0 is a browser extension for Chrome and Firefox that pushes your accepted LeetCode solutions into a GitHub repository, forked from the original extension to keep up with LeetCode's new dynamic interface, with a webpack build that emits separate bundles for the two browsers. It suits developers who want a public record of their practice without doing it by hand.
Who is it for?
Adopt LeetHub 2.0 if you want your LeetCode solutions committed to a GitHub repository without a manual step, since the extension writes the accepted solution for you and keeps the repository private by default. Do not adopt it as a general purpose sync tool, because it is scoped to LeetCode and the GitHub side is a plain commit into a repository you set up in the extension.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 16 days ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What the extension actually does

The README describes LeetHub 2.0 as a Chrome and, new in this version, Firefox extension that automatically pushes your code to GitHub when you pass all tests on a Leetcode problem. The trigger is the acceptance event rather than a button, so the workflow has no manual step at all once it is set up. The two reasons the README gives are worth reading as a product statement. The first is that recruiters want to see contributions to the open source community, whether through side projects, algorithms and data structures, or contributions to existing projects, and that GitHub is the portfolio, so keeping it up to date is the point. The second is that there is no easy way of accessing your Leetcode problems in one place, and pushing code manually from Leetcode to GitHub is time consuming, so automating it removes the cost entirely.

Why a fork, and what the author changed

The fork has a stated reason. The README says the extension is forked from the original LeetHub and improves on it to be faster, cleaner and compatible with the new dynamic LeetCode user interface. The author's own account is more specific. After the 2023 SVB bank closure and growing layoffs, it became clear that maintaining your skills is incredibly important, and a repository that keeps your learnings over the years, with its commit history and notes, is a way to do that. The decisive technical point is that with the previous and other extensions broken by recent LeetCode and GitHub changes, the author decided to build one out using the original as a starting point. So the fork exists because both sides of the integration moved, and the previous extensions stopped working against them.

The setup is four clicks in the extension

The user flow is described in four steps, and the interesting one is the second. After installation you launch LeetHub, then you click an authorize with GitHub button to automatically set up your account with LeetHub. Then you set up an existing or new repository with LeetHub, private by default, by clicking the Get Started button. Then you begin leetcoding, and to view your progress you click on the extension. The GitHub authorisation step is what removes the need to paste a token by hand, and the private by default setting is the one that matters for anyone who does not want their solutions visible from the first commit.

Two manifests and two output folders

The repository is set up for two browsers from one source tree. There is a `manifest-chrome.json` and a `manifest-firefox.json` at the root, and the build writes into separate folders, with the README telling a developer to select the `./dist/chrome` or `./dist/firefox` LeetHub folder when loading the unpacked extension. The build is webpack, configured in `webpack.config.js`, and the dependency list explains the shape of it. The dependency list also includes `copy-webpack-plugin`, `filemanager-webpack-plugin`, `ignore-loader`, `puppeteer` and `jasmine`, though the README does not document what each one does in the build. The rest of the tree follows the same split, with `css/`, `popup.html`, `welcome.html`, `assets/`, `scripts/`, `spec/` and a `.prettierrc` for formatting.

Building the extension from a fork

The local development path is documented step by step, and it is short. You fork the repository and clone it to your local machine, run `npm run setup` to install the developer dependencies, and run `npm run build` to build the final extension files into the `./dist/` directory. Then you open the browser's extension page, `chrome://extensions` in Chrome or `about:debugging` in Firefox, enable developer mode, click Load unpacked or Load Temporary Add-on, and select the `./dist/chrome` or `./dist/firefox` folder. The two build commands are:

bash
npm run setup
npm run build

The README also flags the loop you will live in. Be sure to run `npm run build` and reload the extension after making changes, which is the standard cost of extension development where the browser caches the loaded bundle until you tell it otherwise.

The quality commands are npm scripts too

The remaining npm scripts are listed in the README as the other commands available, and they map onto a standard JavaScript project layout. `npm run` shows the list of commands available. `npm run format` auto-formats JavaScript and HTML and CSS, and `npm run format-test` tests that all code is formatted properly, which is a check rather than a rewrite. `npm run lint` lints the JavaScript, and `npm run lint-test` tests that all code is linted properly, again as a check. Underneath, the manifest shows the tooling behind them, with Prettier 2, ESLint, Webpack 5 and the webpack CLI, Jasmine 5 for the test runner, and Puppeteer 22 in the development dependencies. The `test` script runs Jasmine, and the `dev` script runs webpack in production mode with watch enabled, which is the command you want while changing the extension.

MIT licensed, with a version number and no releases

The licence is MIT, with the badge in the README pointing at the `LICENSE` file at the repository root, and the copyright line in that file naming the author. The version in the package manifest is `2.0.10`, and the package is marked private, which is normal for an extension that is distributed through the browser stores rather than npm. There are no GitHub releases for the project, so the store listing and the manifest version are the only version references a user has, and the last push to the repository was on 2026-10-08. The extension itself is published in the Chrome Web Store and on the Firefox add-ons site, and the README keeps the old store links and the Discord and Product Hunt badges commented out in the markdown, which is a small sign of how much of the surrounding page was inherited from the original project rather than written for the fork.

Editorial conclusion

Adopt LeetHub 2.0 if you want your LeetCode solutions committed to a GitHub repository without a manual step, since the extension writes the accepted solution for you and keeps the repository private by default. Do not adopt it as a general purpose sync tool, because it is scoped to LeetCode and the GitHub side is a plain commit into a repository you set up in the extension. Verify first which browser you use and that the extension listing covers it, since Chrome and Firefox have separate manifests and separate builds and that the repository you connect is the one you want your solutions committed to.

Frequently asked questions

What does LeetHub 2.0 do exactly?

It is a Chrome and Firefox extension that automatically pushes your code to GitHub when you pass all tests on a Leetcode problem. It is forked from the original LeetHub to be faster, cleaner and compatible with the new dynamic LeetCode interface.

How do I set up LeetHub 2.0?

Install the extension, launch it, click the authorize with GitHub button to connect your account, then use the Get Started button to set up an existing or new repository, which is private by default. After that, solutions are pushed as you pass the tests, and you open the extension again to see your progress.

How do I build LeetHub 2.0 from source?

Fork and clone the repository, run `npm run setup` to install the developer dependencies, then `npm run build` to produce the final extension files in the `./dist/` directory. Load the `./dist/chrome` or `./dist/firefox` folder as an unpacked extension, and rebuild and reload after each change.

Which browsers does LeetHub 2.0 support?

Chrome and Firefox. The repository carries a separate `manifest-chrome.json` and `manifest-firefox.json`, and the build writes into separate `./dist/chrome` and `./dist/firefox` folders, each of which is what you load in the browser.

Official sources

  1. arunbhardwaj/LeetHub-2.0 on GitHub
  2. Issues
  3. License: MIT
  4. Project website
  5. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/arunbhardwaj-leethub-2-0.svg)](https://hysenlabs.com/projects/arunbhardwaj-leethub-2-0)

Was this useful?