Privacy
Your code stays on your computer.
Bitling is local-first. This page explains, in plain words, what it reads, where things are kept, and what never leaves your machine.
The short version
- Your projects, solutions, and practice data are stored on your computer, not on our servers.
- The extension reads a practice page only when you open the Bitling popup on it. Opening the popup is what captures the problem.
- Bitling refuses to capture proctored or employer assessment pages.
- No account needed, no ads, no tracking, and no telemetry.
- Nothing is sent to Bitling. Anything that would send your data to a Bitling service, like sync, will be optional and off until you turn it on. (Capturing a problem can ask that practice site for the problem's details, the same way its own page does; see below.)
What the extension reads, and when
The Bitling Chrome extension works on a short list of practice sites. On those sites, a small part of the extension loads with the page and then waits. It doesn't read anything until you open the Bitling popup on a problem; opening it reads the problem right away. The full list of sites is under permissions.
When you do, it reads that one page to pick up the problem:
- the title, difficulty, and problem statement,
- the examples and constraints, including the sample test inputs the site provides,
- the site's topic tags, its own IDs for the problem, and details it shows about where the problem lives (such as a HackerRank track),
- the starter code the site offers, for every language it lists (so the project can use the one you pick),
- on a Codewars training page, whatever its Solution and Sample Tests editors show at that moment: the starter code and sample tests, and also any edits you've made there or a solution you saved on Codewars. It stays in the project on your computer and is never uploaded: an empty starter becomes the placeholder you write your solution in, anything with code in it is kept only as a comment, and the sample tests only as a commented reference file that never runs, and
- on LeetCode, the editor language you last chose there, which the site keeps in your browser.
On some sites, Bitling asks the site for the same problem details the page itself loads. That request goes from your browser to that site, the same way the page's own requests do. It doesn't go to Bitling.
The extension doesn't read other tabs, sites outside that list, or your browsing history. The readable copy of the problem
(problem.html) is cleaned up before it's saved and contains no scripts. The project also keeps the problem's
original details as data in .practice/problem.json, which is never run or displayed as a page.
Assessments are off-limits
Bitling is for practice. When it detects a proctored or employer assessment page, it stops and doesn't capture the problem. Good luck on the assessment!
Where your data lives
- Your projects
-
Written to a folder you choose on your computer, for example
~/Code/Practice/leetcode/two-sum. Each project holds a README, a saved copy of the problem (problem.html), starter code, a test file, and a small.practice/folder Bitling uses to tell its files apart from yours. - Your folder choice
- The extension remembers which folder you picked, inside the browser on your computer, so it doesn't ask every time. Chrome may ask you to confirm access again later.
- Your code
- Your solutions and tests are yours. Bitling doesn't upload them, and it never silently overwrites them.
- Sent to Bitling
- Nothing. The extension doesn't talk to any Bitling server.
Permissions, one by one
Chrome shows these when you install the extension. Here's why each one is there.
-
storage - Lets the extension remember two small preferences on your computer: the project template you last picked for each site, and the editor you last picked to open each kind of project. Nothing stored this way is sent anywhere.
-
nativeMessaging - Lets the extension talk to the Bitling desktop app on the same computer, once that app is available. It can't run arbitrary programs.
- Access to these sites
-
So the extension can read a problem page on them when you open Bitling there:
- LeetCode
https://leetcode.com/* - CodeSignal
https://codesignal.com/* - CodeSignal (app)
https://app.codesignal.com/* - HackerRank
https://www.hackerrank.com/* - Codewars
https://www.codewars.com/* - Exercism
https://exercism.org/* - Codility
https://app.codility.com/* - Coderbyte
https://coderbyte.com/*
- LeetCode
Things Bitling doesn't do
- It doesn't collect telemetry or analytics. If that ever changes, it'll be off unless you turn it on.
- It doesn't need an account.
- It doesn't show ads or sell or share your data.
- It doesn't upload your code.
- It doesn't submit solutions to practice sites for you.
- It doesn't capture assessment or proctored pages.
Coming later, and how this page will change
These parts of Bitling aren't available yet. This page will be updated before each one ships.
- Desktop app
- Keeps your practice library, history, and settings in a local database on your computer. It works without the network. If you turn on test-result pickup for a project, it also reads the test report files that project's own tests write, inside that project's folder, and keeps only the counts and times. It never runs your tests. It contacts a server only if you set one up yourself in its optional Account settings (there's no hosted Bitling server yet), and then only that server: when you sign in (with your email, or, if that server signs in with Google, in your browser on the server's sign-in page and Google's, which hand the sign-in back only to the app on your computer) or sign out, if you also turn on sync, to sync, when you save or join a collection, when you open one (to read its assignments, its problem set and anything shared for feedback), when you write a problem for one or make a project for one of its problems (to read that problem), and when you share an attempt with its mentor or write a comment.
- Local coach (MCP)
- Runs on your computer and shares only practice context, like the current problem and your attempt, with an AI tool you connect yourself. It doesn't give that tool access to the rest of your files. The AI tool you connect has its own privacy policy, and what you send it is covered by that policy.
- Optional sync
- Off unless you turn it on, and Bitling works fully without it. There's no hosted Bitling server yet, so today it only works with a development server you run yourself. Next to the switch, the desktop app lists every field that gets uploaded, in five kinds you can each turn off: problem details (title, site, link and difficulty), attempt summaries (including the highest hint level, how the attempt felt and how many tests failed), practice sessions, your reflections, and your default language, template and coach settings. A kind you turn off isn't uploaded or taken in from your other computers; what was already uploaded stays on the server until you delete your account. Your source code, project files and the problem pages you captured are never uploaded, and there's no setting that changes that. On your other computers, finished attempts, reflections and sessions are added to the library and never removed, and the most recent settings change wins. Synced data isn't end-to-end encrypted.
- Shared collections
- A collection is a list of problems in weeks and sections, and it isn't part of sync. Saving one in the desktop app uploads it to the server you set up, whether or not sync is on and whether or not you share it; sharing it only makes a link others can join with, and joining asks the server for it with that link. It holds its title, the author's notes and chosen name, and each problem's name, platform and page link, never a problem's text or any code: the people who join make each project on their own computer, from the problem's page. The server shows a collection only to its author and the people who joined with its link, and never shows them the author's email. The desktop app keeps a copy of each one for the account that's signed in, so you can read it offline.
- Assignments
- A collection's author can assign some of its weeks with a due date. When you open a collection you joined, the desktop app reads its assignments from the server. Only if you turn on "Share my progress with the group" for an assignment (it's off until you do) does it tell the server which assigned problems you've solved in your library: only those problems' ids, never when you solved them, how long it took, your hints, notes or code. Turning it off again removes what it shared. The server stores your report with your account, so it knows whose it is; the author never sees who finished, how many, or anything about one person: only whether none, some, most or all of the members who share finished, and nothing at all until at least three members share. A due date is only a guide; nothing is locked, timed or watched. Leaving the collection removes what you shared there.
- Problem sets
- A collection's author can also write practice problems of their own for it: a title, a short name, a statement, constraints, worked examples and tags. Nothing else: never starter code, a solution, tests, a time limit or a score, and the server refuses anything that reads as code. Saving one uploads it to the server you set up, which shows it only to the author and the people who joined the collection, and records nothing about who read it or when. To make a project for one, the desktop app reads the problem from the server and makes the project on your computer, in your project folder, with the template you pick; it never replaces a file that's already there, and nothing you write in it is sent anywhere. The problem then sits in your library like one you captured, so if sync is on, its title, difficulty and a link naming the set go with your problem details. Deleting a problem, or its collection, removes it from the server; projects people already made stay on their computers. Nothing here grades, times or watches anyone.
- Mentor feedback
- In a collection you joined, you can choose to share one attempt with the collection's author, to ask for their thoughts. Nothing is shared until you pick the attempt, and the app shows you exactly what goes first: which of the collection's problems it was, how it ended, your reflection's answers, and, if you add them, a short question and the name you sign it with. Never your code, when you worked on it, your hints, test results or your own written notes. The author sees only the attempts shared with them and can comment on them; you see the comments and can reply. The server stores each shared attempt with your account, and knows who owns the collection, so it can tell whose thread every comment is in; a comment itself stores only its text and whether the author or the member wrote it, and nothing here stores a time. The author sees the name you sign with, if any, never your email. You can stop sharing an attempt at any time, which deletes it and all its comments from the server, and leaving the collection does the same for everything you shared there. Nothing here grades, ranks, times or watches anyone.
- Your copy, and deleting your account
- While signed in, the desktop app can save everything the sync server holds for your account to a JSON file you choose, and it asks before replacing a file (collections, assignments, problem sets and shared attempts aren't in that file: the Collections page already shows each one). Deleting your account removes it from the server with everything it synced and ends its sign-ins on every device. It also deletes the collections you made with their assignments and problem sets, so the people who joined them lose access (projects they already made stay theirs), along with everything shared in them and every comment, and takes you out of the ones you joined along with the progress and attempts you shared there (and their comments); your computer's copies of them are removed too. It only works while the server can be reached, and if it can't, the account stays and sync pauses until you finish or cancel the deletion. The practice data on your computers stays where it is.
This website
This site doesn't use cookies, analytics, or third-party scripts, and its fonts and images are served from the site itself. It's hosted on Cloudflare Pages, and like any web host, Cloudflare may keep standard request logs (such as the address a request came from and the page asked for) under its own privacy policy.
Your choices
- Removing the extension from Chrome also removes what the extension stored in the browser.
- Your project folders are ordinary files. Keep them, move them, or delete them like any other folder.
- If you try the optional sync, you can turn each kind of synced data off, save a copy of what the server holds, or delete the account, all in the desktop app's Settings → Account.
-
You can see and change the extension's site access at any time on Chrome's extensions page, at
chrome://extensions.
Changes and contact
If what Bitling does with data changes, this page changes first, and the effective date at the top will move.
Who makes Bitling, and where to send privacy questions: Contact details coming soon.