Chrome Extension · Open Source · Free Forever

Solve. Document. Push.
One Click.

LeetSync lives inside LeetCode. It extracts your code, lets you write clean Intuition, Approach, and Walkthrough notes, then pushes everything as polished Markdown to your GitHub — organized by 18 DSA patterns.

No backend needed Manifest V3 Under 40 KB downloads

FEATURES

Everything you need.
Nothing you don't.

One-Click Extract

Reads the Monaco editor directly. Title, difficulty, language, and full solution code — extracted instantly.

Structured Notes

Built-in sections for Intuition, Approach, Example Walkthrough, Time Complexity, and Space Complexity.

18 DSA Patterns

Arrays & Hashing, Two Pointers, Sliding Window, Stack, Binary Search, Linked List, Trees, Tries, Graphs, DP, Greedy, and more.

100% Private

Your GitHub PAT never leaves your browser. Zero backend, zero accounts, zero tracking. Completely client-side.

In-Page Overlay

Shadow DOM panel sits right inside LeetCode. No tab-switching — write notes while the problem is in front of you.

GitHub API Push

Uses the GitHub Contents API to commit polished Markdown files directly. Each save creates a real commit in your repo.

SEE IT IN ACTION

Two interfaces. Same power.

Use the floating overlay right inside LeetCode, or open the extension popup from your toolbar.

Overlay Panel On LeetCode
LeetSync overlay panel floating on the LeetCode problem page

The LeetSync panel lives alongside the problem. Extract code, write notes, and save — without leaving the page.

Extension Popup From Toolbar
LeetSync Chrome extension popup with problem workspace

Full workspace: code preview, Intuition, Approach, Walkthrough, Time & Space Complexity. All in 390px.

HOW IT WORKS

From solution to portfolio
in three steps.

1

Solve

Write and submit your LeetCode solution normally. LeetSync sits ready — in-page overlay or toolbar popup.

2

Extract & Annotate

Click Extract from Page. The code, title, difficulty, and language are pulled automatically. Add your notes.

3

Save to GitHub

Click Save. A polished Markdown file is committed to your repository, organized by DSA pattern.

REAL OUTPUT

This is what LeetSync
pushes to your GitHub.

Actual output from saahilpal/leetcode

Linked List / 0567. Remove Nth Node From End Of List.md
# Remove Nth Node From End Of List
Difficulty: Medium   Pattern: Linked List   Language: cpp
LeetCode: https://leetcode.com/problems/remove-nth-node-from-end-of-list/
## Intuition
In this problem we need to remove the nth node from the end of the linked list. A simple way would be to first calculate the length of the list and then find the node to remove, but that would require two passes.
Instead, we can solve this in one traversal using the two-pointer technique. We use two pointers called fast and slow. First we move the fast pointer n steps ahead to create a gap between the two pointers. Then we move both pointers forward one step at a time. When the fast pointer reaches the end of the list, the slow pointer will be just before the node that needs to be deleted.
To make deletion easier when the first node has to be removed, we use a dummy node before the head.
## Approach
Create a dummy node and connect it to the head of the list. Initialize two pointers fast and slow starting from the dummy node. Move the fast pointer n steps ahead to create a gap. Move both fast and slow forward together until fast reaches the last node. Now slow will be positioned just before the node we want to delete. Remove the node by updating: slow->next = slow->next->next. Return dummy->next as the new head.
## Example Walkthrough
head = [1,2,3,4,5], n = 2
Step 1: Move fast pointer n steps ahead → slow → 1, fast → 3
Step 2: Move both together → slow → 3, fast → 5
Step 3: Remove the node → slow->next = slow->next->next
Final list: 1 → 2 → 3 → 5
## Time Complexity   O(n)
## Space Complexity   O(1)
## Code
class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {

        ListNode* dummy = new ListNode(0, head);
        ListNode* fast = dummy;
        ListNode* slow = dummy;
        while (n--) {
            fast = fast->next;
        }
        while (fast->next) {
            slow = slow->next;
            fast = fast->next;
        }
        slow->next = slow->next->next;
        return dummy->next;
    }
};
LeetSync | Synced from browser extension

YOUR REPO STRUCTURE

saahilpal/leetcode
├── Arrays & Hashing/
│   ├── 0001. Two Sum.md
│   ├── 0049. Group Anagrams.md
│   ├── 0128. Longest Consecutive Sequence.md
│   └── README.md
├── Two Pointers/
│   ├── 0015. 3Sum.md
│   ├── 0167. Two Sum II.md
│   └── README.md
├── Sliding Window/
│   ├── 0003. Longest Substring Without Repeating.md
│   └── README.md
├── Stack/
│   ├── 0020. Valid Parentheses.md
│   └── README.md
├── Binary Search/
│   └── README.md
├── Linked List/
│   ├── 0019. Remove Nth Node From End Of List.md
│   ├── 0021. Merge Two Sorted Lists.md
│   ├── 0206. Reverse Linked List.md
│   └── README.md
├── Trees/
│   ├── 0104. Maximum Depth Of Binary Tree.md
│   └── README.md
├── Heap / Priority Queue/
│   └── README.md
├── Backtracking/
│   └── README.md
├── Tries/
│   └── README.md
├── Graphs/
│   ├── 0133. Clone Graph.md
│   └── README.md
├── Advanced Graphs/
│   └── README.md
├── 1-D Dynamic Programming/
│   ├── 0070. Climbing Stairs.md
│   └── README.md
├── 2-D Dynamic Programming/
│   └── README.md
├── Greedy/
│   ├── 0055. Jump Game.md
│   └── README.md
├── Intervals/
│   └── README.md
├── Math & Geometry/
│   └── README.md
├── Bit Manipulation/
│   └── README.md
└── README.md

FIRST-TIME SETUP

Create all 18 pattern folders
in one command.

GitHub's API can't create empty folders. Run one of these scripts once inside your repo to scaffold every pattern folder with a README, then push to GitHub.

Terminal — macOS / Linux (Bash/Zsh)
#!/bin/bash
# Run this inside your LeetCode solutions repo

patterns=(
  "Arrays & Hashing"
  "Two Pointers"
  "Sliding Window"
  "Stack"
  "Binary Search"
  "Linked List"
  "Trees"
  "Heap / Priority Queue"
  "Backtracking"
  "Tries"
  "Graphs"
  "Advanced Graphs"
  "1-D Dynamic Programming"
  "2-D Dynamic Programming"
  "Greedy"
  "Intervals"
  "Math & Geometry"
  "Bit Manipulation"
)

for pattern in "${patterns[@]}"; do
  mkdir -p "$pattern"
  cat > "$pattern/README.md" << EOF
# $pattern

Solutions for the **$pattern** pattern.

| # | Problem | Difficulty | Solution |
|---|---------|------------|----------|
|   |         |            |          |
EOF
  echo "✅ Created: $pattern/"
done

echo ""
echo "🎉 All 18 pattern folders created!"
echo "Now run: git add . && git commit -m 'init: scaffold pattern folders' && git push"
💡 Why is this needed? GitHub doesn't support empty folders. LeetSync pushes files into folders like Arrays & Hashing/0001. Two Sum.md, but the folder must exist first. This script creates all 18 pattern folders with a README so they're tracked by Git.

INSTALLATION

Ready in under 2 minutes.

1

Download

Click the button below to get the extension .zip file.

2

Extract

Unzip to any folder on your machine.

3

Open Extensions

Go to chrome://extensions in Chrome, Brave, or Edge.

4

Developer Mode

Toggle Developer Mode ON in the top-right corner.

5

Load Unpacked

Click "Load unpacked" and select the extracted dist folder.

6

Connect GitHub

Open the popup → enter your GitHub PAT (Classic), username, and repo name.

Download LeetSync Extension

No sign-up · No tracking · Works on Chrome, Brave, Edge, Open Unpacked

🛡️

Why manual install?

Chrome Web Store requires developer registration fees. To keep this project 100% free and open source, the extension is distributed directly. This ensures the project remains independent, transparent, and exactly as intended.

THE PROJECT

Why LeetSync exists.

The Problem

Every developer who grinds LeetCode faces the same issue: solutions are written, submitted — and then lost. Copying code to GitHub manually is tedious. Writing proper notes? Even more so. Most people just stop doing it.

The Solution

LeetSync automates the entire workflow. One click extracts your code. Structured fields guide your thinking. And a single "Save" button pushes a beautifully formatted Markdown file — with Intuition, Approach, Walkthrough, Complexity, and Code — directly into your GitHub.

Who It's For

Anyone who wants their LeetCode practice to become a visible GitHub portfolio. Students preparing for interviews. Developers building discipline. Anyone who believes practice should be documented, not disposable.

Tech Stack

TypeScript · Vite · Chrome Manifest V3 · Shadow DOM overlay · GitHub Contents API · Zero runtime dependencies. Under 40 KB total bundle. Built for performance.

S

DEVELOPER

Sahil Pal

Full-stack developer building tools that make developer workflows faster. LeetSync was born from my own frustration — spending more time formatting solutions than actually solving problems.