Typing Practice for Programmers

var runtil = /Until$/,
  rparentsprev = /^(?:parents|prev(?:Until|All))/,
  isSimple = /^.[^:#\[\.,]*$/,
  POS = jQuery.expr.match.globalPOS,
  // methods guaranteed to produce a unique set when starting from a unique set
  guaranteedUnique = {
    children: true,
    contents: true,
    next: true,
    prev: true

  find: function( selector ) {
    var i, l, length, n, r, ret,
      self = this;

    if ( typeof selector !== "string" ) {
      return jQuery( selector ).filter(function() {
        for ( i = 0, l = self.length; i < l; i++ ) {
          if ( jQuery.contains( self[ i ], this ) ) {
            return true;
Practice typing the awkward characters in code.
No drills — type through open source code in JavaScript, Ruby, C, C++, Java, PHP, Perl, Haskell, Scala, and more.
Eliminate the mistyped keys delaying every edit-compile-test iteration.
Your browser does not support the JavaScript and CSS features required by However, you can enable these features without switching browsers by installing Google Chrome Frame. The installation does not require admin access and will only affect sites like that explicitly opt in.
Improve Your Typing

What is is a typing tutor/trainer for programmers.'s lessons are based on open source code, allow you to practice typing the key sequences that appear in real code.

How does differ from other typing tutors?

Most typing tutors sidestep symbol keys and skip the most frequently typed key, backspace/delete. includes these keys, resulting in uninflated WPMs and realistic practice.

Does typing speed bottleneck programming?

Yes, every typo interrupts the thought process not unlike a slow compiler or UI lag. Faster and more accurate typing is like a better REPL — not only does this speed up development, it fundamentally affects the exploration process.

Is typing speed relevant with code completion?

Yes, code completion tools usually help with easyToTypeAlphabeticVariables, leaving developers with a higher concentration of remaining symbols. Some completion tools help initially generate symbol-heavy boilerplate, but subsequent edits still require manual typing.

Why can't I practice typing while programming?

While programming, we optimize for short term speed instead of long term speed, i.e. correcting a typo instead of correcting the underlying muscle memory. allows you to focus on improving your typing while providing explicit feedback on accuracy and speed.

Why doesn't allow typing open and closing braces/brackets together?

e.g. typing {}content

instead of {content}

Typing paired symbols together is significantly slower due to the long jumps to the arrow keys. uses JavaScript to analyze your typing. Please enable or whitelist JavaScript.