For practice

Practise together. Free forever.

Paste any problem, get a working shell and a test suite that proves you solved it, and send one link to whoever is practicing with you. Neither of you makes an account, and none of it costs anything — not now, not later.

What “free forever” actually means

Four things, and none of them has a date on it.

  • No account, for either of you

    You open a room and they open a link. There is no sign-up screen, no password, no email to confirm and nothing to reset six months from now.

  • No card, no trial, no seat count

    Practicing together is the product, not a sample of it. Nothing here runs out after fourteen days or after the second person joins.

  • Your problems, not a paywalled bank

    Work the questions you actually care about — the one from last week’s onsite, the one in the textbook. There is no premium question set.

  • Everything on this page, always

    Generated challenges, verified tests, the sandbox, video, the cursor and the pointer. A paid plan for hiring teams is coming; this list is not what it takes away.

How to use it

Five minutes end to end, and the first one is the only one that needs explaining.

  1. Paste the problem

    Open cocode and paste the challenge into the box on the front page, in plain English — a paragraph off a job posting or out of a book is exactly the right shape. Include at least one worked example, something like nums = [2,7,11,15], target = 9 → [0,1].

    The examples are what the tests get built from, so a problem with none cannot be built. Then press Build the challenge.

  2. Pick a language

    TypeScript, JavaScript, Python and Rust. The picker sits in the room’s header, and the language belongs to the room rather than to your screen — switch it and it switches for both of you.

    cocode writes the shell in that language: the function signature, the types, an empty body with your move in it. Alongside it comes a test file built from the examples in your prompt, already checked against a reference solution, so a failing test means the code is wrong rather than the test.

  3. Send one link

    Copy the invite from the room and send it however you already talk to each other. They open cocode…/app#room=ABC123 and they are in — no account, no install, no extension, no waiting room.

    The room code travels in the link’s # fragment, which browsers never send to a server, so it stays out of access logs and out of anything either of you clicks from the page.

  4. Solve it together

    You each get a cursor in the editor and a colour that stays yours — aqua is you, magenta is them — plus a shared pointer and a shared selection. Video sits beside the code in the same tab, so nobody is juggling a call in one window and an editor in another.

    The pointer is the one you will use most. You can aim it at line 14 and say “this one” without reaching over and taking the keyboard away, which is the difference between helping someone and solving it for them.

  5. Run the tests

    Press Run. The suite runs in the browser, inside a sandbox, and each case turns green or red in front of both of you — no setup, no toolchain, nothing installed on either machine.

    Then do it again with the next problem. Closing the tab ends the room; opening cocode again starts a fresh one.

What is in the room

All of it, on the free plan, which is the only plan a practice pair needs.

  • Tests from your own examples

    The examples in the problem you pasted become the cases in the suite, so the tests are about your problem rather than a near neighbour of it.

  • Verified before you see them

    Every generated suite is run against a reference solution first. A suite that does not pass its own answer never reaches the room.

  • 4 languages

    TypeScript, JavaScript, Python and Rust. One per room, switchable at any time, for both people at once.

  • Run it in the browser

    The suite executes in a sandbox in the page. Nothing is installed and nothing escapes onto either machine.

  • Video in the same tab

    Two tiles beside the editor. The conversation and the code are in one place, which is where an interview actually happens.

  • Cursor, pointer and selection

    See where they are typing, what they are pointing at and what they have highlighted — the three things you would do with your hands in person.

Questions

The ones people ask before their first room, answered honestly.

What happens to my code?

It lives in the room while the room is open. Rooms are ephemeral — close the tab and it ends, and there is nothing left to go back to. Copy anything you want to keep before you leave.

Do I need an account?

No, and neither does the person you invite. There is no sign-up anywhere in cocode, which is also why there is no history: nothing is attached to a person because there is no person to attach it to.

Which languages can I use?

TypeScript, JavaScript, Python and Rust. You pick one per room and can change it mid-session; the change applies to both of you, because the language belongs to the room.

What if the challenge fails to build?

cocode says why instead of failing quietly — usually the prompt has no worked example, or it is not clear what the function should return. Fix that line and try again, or open an empty room and write the shell yourself.

Is it really free?

Yes, permanently, for everything on this page. A paid plan for hiring teams is being built for the things that outlive a session — recordings, transcripts, scorecards — and the live session itself stays free.

Can I use it to interview someone?

Yes, and people do; it is the same room either way. If you are hiring as a team, see what is coming for teams.

Bring a problem and a friend.

The room is already set up. It takes one paste and one link.