Skip to content

textmode.js - Real-time ASCII art for the web

Lightweight creative coding library for real-time textmode graphics in the browser.

What is textmode.js? ​

textmode.js brings the art of ASCII and textmode graphics into the modern web. Built for developers from all corners and skill levels of the creative coding world - it's the tool I wished existed when I started exploring textmode art.

Ready for production, built for creativity ​

A library designed for building generative art installations, retro games, interactive visualizations, live coding performances, and experimental web experiences. Whether you're prototyping an idea or shipping a production app, textmode.js has you covered.

Shape the future of textmode graphics. Your feedback, ideas, and creations help drive development.

From zero to textmode in minutes ​

javascript
const tm = textmode.create();

tm.draw(() => {
  tm.background(0, 0, 0, 0);
  
  const halfCols = tm.grid.cols / 2;
  const halfRows = tm.grid.rows / 2;
  
  for (let y = -halfRows; y < halfRows; y++) {
    for (let x = -halfCols; x < halfCols; x++) {
      const dist = Math.sqrt(x * x + y * y);
      const wave = Math.sin(dist * 0.2 - tm.frameCount * 0.1);
      
      tm.push();
      tm.translate(x, y, 0);
      tm.char(wave > 0.5 ? '▓' : wave > 0 ? '▒' : '░');
      tm.charColor(0, 150 + wave * 100, 255);
      tm.point();
      tm.pop();
    }
  }
});

Simple, powerful, and ready for your wildest ideas.



Community & Support

You're not coding alone. Join a vibrant community of creative developers pushing the boundaries of textmode art.

Get involved

Your work matters. Sketches shared with #textmodejs inspire the next wave of creators. Bug reports strengthen the foundation. Jump in wherever your passion leads.

What will you create?

>_

Every sketch starts with an empty file.
Your next masterpiece starts the same way.