A modern browser-based ASCII art studio built with Next.js, React, FIGlet, and a full-featured character canvas editor.
Bit Space is a creative ASCII art playground for drawing, editing, converting, and exporting character-based artwork directly in the browser. It opens with an animated ASCII-themed landing page and launches into a full paint workspace with a grid canvas, drawing tools, FIGlet text, image-to-ASCII conversion, history controls, character sets, export settings, and light/dark theme support.
The editor is entirely client-side. Canvas data, preferences, filters, export settings, brush choices, and custom characters are handled in React state and browser storage, making the project easy to run locally and deploy as a static-style Next.js app.
The project includes a demo video:
demo/video.mp4
| Light Mode | Dark Mode |
|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
- Animated ASCII art landing page with particle-style canvas background.
- Dedicated
/paintworkspace for ASCII drawing and editing. - Grid-based character canvas with adjustable zoom.
- Canvas presets, including small, medium, large, wide, square, ultra-wide, portrait, banner, poster, mobile, and desktop.
- Extend canvas edges left, right, top, or bottom.
- Toggle grid visibility.
- Light and dark theme support with
next-themes. - Multiple drawing tools: select, pencil, eraser, fill, line, rectangle, circle, and text.
- Brush size control for drawing and erasing.
- Filled shape options for rectangles and circles.
- Smooth drawing option for pencil work.
- Symmetry drawing modes: vertical, horizontal, both, and radial.
- Character chooser with many built-in character sets.
- Custom character set editor.
- Selection tools with copy, paste, clear, and select-all support.
- Right-click context menu for selection and edit actions.
- Undo, redo, history panel, history clearing, and jump-to-history support.
- Find and replace tools for characters.
- Swap characters across the canvas.
- Replace characters inside the current selection.
- Add regular text to the canvas.
- Generate large ASCII text with FIGlet fonts.
- Large bundled FIGlet font collection in
public/fonts/. - Upload an image and convert it into ASCII art.
- Image conversion controls for output size, aspect ratio, character set, brightness, contrast, saturation, grayscale, invert, dithering, threshold, and color mode.
- Filter presets such as vintage, modern, dramatic, soft, noir, solarize, high contrast, dreamy, and cinematic.
- Export ASCII art as a
.txtfile. - Export artwork as image formats, including PNG, JPEG, SVG, and WebP options from the UI.
- Export settings for size, quality, and transparent background.
- Persistent local preferences through
localStorage. - Keyboard shortcuts for common tools and actions.
- Toast notifications for completed actions.
- App metadata, manifest, favicon assets, Open Graph image route, sitemap, and custom error pages.
| Shortcut | Tool or Action |
|---|---|
B |
Pencil |
E |
Eraser |
F |
Fill |
L |
Line |
R |
Rectangle |
C |
Circle |
T |
Text |
S |
Select |
Space |
Hand tool |
Esc |
Clear selection |
Ctrl+Z |
Undo |
Ctrl+Shift+Z |
Redo |
Ctrl+Y |
Redo |
Ctrl+C |
Copy selection |
Ctrl+V |
Paste selection |
Ctrl+A |
Select all |
Ctrl+S |
Export as text |
Ctrl+H |
Toggle history panel |
Bit Space includes preset groups for ASCII, blocks, shapes, lines, math symbols, arrows, stars, hearts, music, chess, emoji, geometric symbols, box drawing, Greek, Japanese, general symbols, and custom characters.
| Area | Technology |
|---|---|
| Framework | Next.js 15 App Router |
| UI Library | React 19 |
| Styling | Tailwind CSS 4 |
| Theme Handling | next-themes |
| Icons | Lucide React |
| ASCII Text Rendering | figlet |
| Font Assets | Bundled .flf FIGlet fonts |
| State and Persistence | React hooks, localStorage |
| Export/Conversion | Browser Canvas APIs, Blob downloads |
bit-space/
βββ README.md
βββ package.json
βββ banner.png
βββ demo/
β βββ video.mp4
βββ public/
β βββ favicon.ico
β βββ site.webmanifest
β βββ images/
β β βββ button.png
β βββ fonts/
βββ screenshots/
β βββ dark/
β βββ light/
βββ src/
βββ app/
β βββ (main)/
β βββ paint/
β βββ layout.js
β βββ manifest.js
β βββ opengraph-image.js
β βββ sitemap.js
βββ components/
β βββ error/
β βββ home/
β βββ paint/
βββ hooks/
β βββ useAsciiCanvas.js
βββ styles/
β βββ globals.css
βββ utils/
βββ canvasUtils.js
βββ constants.js
- Node.js 20 or newer
- npm
git clone <repository-url>
cd bit-space
npm installnpm run devOpen http://localhost:3000 in your browser.
npm run build
npm run startnpm run lint| Command | Description |
|---|---|
npm run dev |
Starts the Next.js development server with Turbopack. |
npm run build |
Creates a production build. |
npm run start |
Starts the production server. |
npm run lint |
Runs the configured Next.js lint command. |
- Open the home page.
- Click Launch to enter the paint workspace.
- Choose a tool from the left toolbar.
- Pick a brush character from the right sidebar.
- Draw, fill, select, copy, paste, or add text on the canvas.
- Use Open Image to convert an uploaded image into ASCII art.
- Use Save as Text or Export to download the finished artwork.
- The app is client-side and does not upload artwork to a server.
- Preferences are stored in the browser under
asciiArtPreferences. - Exported text downloads as
ascii-art.txt. - Image export uses browser canvas rendering, so exact output depends on browser support for the selected format.
- Some README screenshots and demo assets are local repository files and should be committed with the project if publishing.
This app can be deployed to Vercel or any platform that supports Next.js.
For Vercel:
- Push the project to a Git repository.
- Import the repository in Vercel.
- Keep the default Next.js build settings.
- Deploy.
This project is licensed under the MIT License. See LICENSE for details.
Ashish Kumar








