LeetCode Solution History Exporter
Free to download on every platform. Comes pre-installed on BotFone, BotPad and BotFlip — with extra free apps included.
About this app
WHAT IT DOES
LeetCode Solution History Exporter extracts your entire LeetCode submission history from your profile and submissions pages, collecting problem titles, difficulty levels (Easy/Medium/Hard), acceptance status, submission dates, runtime performance in milliseconds, memory usage in MB, and the programming language used for each solution. A summary dashboard displays your solved count by difficulty, acceptance rate, language breakdown, and recent activity trends. You can export the full dataset as CSV (for spreadsheets), JSON (for developers), or Markdown (for documentation or portfolio building). The tool also supports filtering by date range and includes options to include runtime stats and code snippets. Perfect for tracking your coding progress, building a portfolio of solutions, backing up your work, or preparing for job interviews by reviewing your past performance.
WHERE IT RUNS
This script runs exclusively on LeetCode web pages (*.leetcode.com/*). It operates entirely within your browser tab, reading the page's DOM to locate submission tables and profile data. The script cannot access other tabs, your browsing history, bookmarks, downloads, or any data outside the current page. All settings—including export format, runtime stats inclusion, code snippet inclusion, date range, and auto-scrape preference—are stored locally using GM_setValue and never transmitted anywhere.
HOW TO USE
After installing with the BotGentz extension, the script automatically scrapes your submission history from the current LeetCode page (if auto-scrape is enabled). The panel shows a summary dashboard with total submissions, accepted count, failed count, difficulty breakdown, language distribution, and average runtime/memory stats. Select your preferred export format from CSV, JSON, or Markdown. Toggle "Include Runtime Stats" and "Include Code Snippets" to customize the export. Choose a date range preset (All Time, Last 30 Days, Last 90 Days) to filter submissions before exporting. Click "Export Data" to copy the formatted export to your clipboard, or "Download File" to save it as a file. Click "Scrape Submissions" to manually refresh the data after navigating to a different page.
THE REAL MECHANISM
The script detects LeetCode's submission table using multiple selectors that match different page versions (table[data-testid="submissions-table"], .submissions-table, .ant-table-row, [role="row"]). It extracts each submission row's text content and uses regular expressions to parse problem titles (e.g., "1. Two Sum"), difficulty levels (Easy/Medium/Hard), status (Accepted, Wrong Answer, etc.), language (Python, Java, C++, etc.), runtime in milliseconds, memory in MB, and submission dates. If the table isn't found, the script falls back to looking for submission cards or profile stats. The summary dashboard calculates totals, aggregates difficulty counts, counts submissions by language, and computes average runtime and memory. For export, the CSV format includes all fields with proper quoting, JSON provides a structured array of objects, and Markdown generates a formatted table. Date range filtering is applied client-side based on the extracted submission dates. All data extraction uses safe DOM methods with no innerHTML from untrusted content.
THE PANEL
The LeetCode Exporter panel is a BGPanel component that you can drag anywhere on your screen by its header. It snaps to the nearest edge when released, keeping your workspace organized. The panel collapses to a small bubble showing only the emoji icon when minimised—click to expand it again. You can resize the panel horizontally to see more of the summary and submissions list. Press the Escape key to collapse the panel instantly. Your panel position and size are saved per-site.
PLEASE NOTE
This script requires the free BotGentz browser extension to function. LeetCode frequently updates its web interface, which may change class names, data-testid attributes, and DOM structure—the script may require updates to maintain compatibility. The extraction works best on the "Submissions" page or the profile page that shows submission history. If the script cannot find submissions, ensure you're on the correct page and that your submissions are loaded (scroll down if using infinite scroll). The date range filtering is based on the dates extracted from the page and may not be precise if dates are formatted differently. The script never reads or writes password fields, hidden inputs, or file inputs. It stores only your export format, runtime stats inclusion, code snippet inclusion, date range, and auto-scrape preference locally. No submission data, account information, or personal information is ever collected, transmitted, or shared.