Skip to content
This repository

JavaScript to CoffeeScript written in CoffeeScript.


Check this project's build status on TravisCI View this project's NPM page

A JavaScript to CoffeeScript compiler


npm install -g js2coffee

CLI Usage

js2coffee input_file.js
js2coffee input_file.js >
cat input.js | js2coffee

You can pass some options:

--version           # Show js2coffee version
--verbose           # Be verbose
--no_comments       # Do not translate comments
--show_src_lineno   # Show src lineno's as comments
--single_quotes     # Use single quoted string literals - default double quoted
--help              # If you need help
--indent            # Specify the indent character(s) - default 2 spaces

API Usage

build(content, option)

  • content String - javascript source code
  • option Object - option object
    • no_comments Boolean - ignore comments, if true
    • show_src_lineno Boolean - show source line numbers in each line as comment, if true
    • indent String - specify indent
    • single_quotes Boolean - use single quoted string literals instead of double quoted
js2coffee = require('js2coffee');
coffeeContent =, {show_src_lineno: true, indent: "    "});

Known issues

Js2coffee has some kown issues

  • switch statements have always implict returns at the end of a function - #250
  • some switch statements fail - switch
  • CoffeeScript keywords become converted with an trailing underscore - keywords
  • Narcissus fails to parse JavaScript keywords as object properties - narcissus
  • some IIFE syntaxes fail - #190
  • Empty function declrations within if statements fail - #162

Try out in the browser
You can swtich the mode (JS -> Coffee and Coffee -> JS) at the top in the center.


Discover how you can contribute by heading on over to the file


You can discover the history inside the file


Licensed under the incredibly permissive MIT License
Copyright © 2011+ Rico Sta. Cruz


Made possible thanks to the hard work of Js2coffee's dependency projects:

And of course:

Something went wrong with that request. Please try again.