Skip to main content
Readme.so offers several customization options to personalize your README creation experience. This guide covers all available customization features.

Dark Mode

Toggle between light and dark themes to match your preference or reduce eye strain.

Enabling Dark Mode

1

Locate the Theme Toggle

Find the sun/moon icon in the top navigation bar (on desktop) or in the tabs (on mobile)
2

Click to Toggle

Click the icon to switch between light and dark modes
3

Automatic Persistence

Your preference is saved to local storage and persists across sessions

How Dark Mode Works

The dark mode implementation uses localStorage to remember your preference:
// From Nav.js:66-77
<button
  onClick={() => setDarkMode(!darkMode)}
  aria-label="Color Mode"
  className="toggle-dark-mode"
>
  <Image
    alt={darkMode ? 'dark' : 'light'}
    src={darkMode ? '/toggle_sun.svg' : '/toggle_moon.svg'}
    width={40}
    height={40}
  />
</button>
  • Clean, bright interface
  • Better for well-lit environments
  • Traditional documentation aesthetic
  • White background with dark text

Theme Persistence

Your theme choice is stored with these settings:
  • Storage key: color-theme
  • Values: 'light' or 'dark'
  • Scope: Persists across browser sessions
  • Location: Browser localStorage
The dark mode setting applies globally across all three columns: Sections, Editor, and Preview.

Custom Sections

Create completely custom README sections beyond the built-in templates.

Creating Custom Sections

1

Open Custom Section Dialog

Click the ”+ Add Custom Section” button in the Sections column
2

Enter Section Title

Type a descriptive name for your section (e.g., “Architecture”, “Performance”, “Security”)
3

Create Section

Click “Add Section” to create your custom section
4

Edit Content

The section appears in your selected sections list with a basic heading. Edit it in the Monaco editor to add your content.

Custom Section Features

Automatic Slug Generation

Your section title is converted to a URL-friendly slug (e.g., “My Section” becomes custom-my-section)

Full Markdown Support

Custom sections support all markdown features, just like built-in sections

Drag and Drop

Reorder custom sections alongside built-in sections

Persistent Storage

Custom sections are saved to localStorage and restored on your next visit

Custom Section Template

When you create a custom section, it starts with this basic template:
## Your Section Title
From there, you can add any content you need:
## Architecture

Our application follows a microservices architecture with the following components:

### Frontend
- React SPA with TypeScript
- Redux for state management
- Styled with TailwindCSS

### Backend
- Node.js REST API
- PostgreSQL database
- Redis for caching

### Infrastructure
- Docker containers
- Kubernetes orchestration
- AWS cloud hosting

Managing Custom Sections

Custom sections can be managed just like built-in sections:
ActionDescription
EditClick the section to edit its content in the Monaco editor
ReorderDrag and drop to change position
ResetRestores the section to its original heading
DeleteRemoves the section from your README
Custom sections are identified by the custom- prefix in their slug. Avoid editing this prefix manually, as it may cause issues with section management.

Search and Filter

Quickly find sections in the library using the search filter. The search filter appears at the top of the available sections list in the Sections column.
1

Locate Search Box

Find the search input that says “Search for a section”
2

Type Keywords

Enter any part of the section name (e.g., “install”, “api”, “test”)
3

View Filtered Results

The section list updates in real-time to show only matching sections
4

Clear Search

Delete your search text to see all sections again

Search Behavior

The search filter uses case-insensitive substring matching:
// From SectionsColumn.js:181-187
const getAutoCompleteResults = (searchQuery) => {
  const suggestedSlugs = sectionSlugs.filter((slug) => {
    return getTemplate(slug).name.toLowerCase().includes(searchQuery.toLowerCase())
  })
  
  return suggestedSlugs.length ? suggestedSlugs : [undefined]
}

Search Tips

You don’t need to type the complete section name. Searching for “env” will find “Environment Variables”.
Search for topics like “test”, “install”, or “deploy” to find related sections.
“API”, “api”, and “Api” all return the same results.
The search input has a clear button (X) for quickly resetting the filter.

Editor Customization

While the Monaco editor comes pre-configured, it includes several built-in features you can use:

Keyboard Shortcuts

The Monaco editor supports many VS Code keyboard shortcuts:
ShortcutActionPlatform
Ctrl/Cmd + FFind in editorAll
Ctrl/Cmd + HFind and replaceAll
Alt + Up/DownMove line up/downAll
Ctrl/Cmd + DAdd selection to next find matchAll
Ctrl/Cmd + /Toggle line commentAll
Alt + ClickAdd cursor at positionAll
Ctrl/Cmd + ZUndoAll
Ctrl/Cmd + Shift + ZRedoAll

Editor Theme

The editor uses the vs-dark theme by default, which provides:
  • Dark background (#1E1E1E)
  • Syntax highlighting for markdown
  • Matching VS Code appearance
  • Optimized for extended editing sessions
The editor theme automatically switches based on your dark mode preference. When you toggle dark mode, both the preview and editor themes update accordingly.

Preview Customization

The preview column offers two viewing modes to suit different needs.

Preview Modes

Best for: Seeing exactly how your README will look on GitHubFeatures:
  • Full GitHub Flavored Markdown rendering
  • Live updates as you type
  • Proper styling for tables, code blocks, and images
  • Automatic external link handling
This mode uses the react-markdown library with remark-gfm plugin for accurate GitHub rendering.

Switching Preview Modes

On desktop, tabs appear at the top of the Preview column:
  1. Click “Preview” to see the rendered markdown
  2. Click “Raw” to see the markdown source
On mobile, preview modes are accessed through the main tab navigation.

Section Organization

Organize your README sections to match your project’s needs.

Reordering Sections

1

Find Selected Section

Look in the top portion of the Sections column where selected sections are listed
2

Drag Section

Click and hold any section, then drag it up or down
3

Drop in Position

Release to place the section in its new position
4

See Updated Preview

The preview column immediately reflects the new order

Best Practices for Section Order

The drag-and-drop system uses @dnd-kit with collision detection and smooth animations for a polished reordering experience.

Local Storage Management

All your customizations are stored in browser localStorage for persistence.

What Gets Stored

Selected Sections

List of all sections you’ve added to your README

Section Content

All edits to both built-in and custom sections

Section Order

The current arrangement of your sections

Theme Preference

Your light/dark mode selection

Custom Sections

All custom sections you’ve created

Focused Section

Which section is currently being edited

Clearing Stored Data

To start completely fresh:
  1. Click the Reset button in the Sections column header
  2. Confirm the action in the dialog
  3. All sections except “Title and Description” are removed
  4. All customizations are cleared from localStorage
Resetting clears all your work and cannot be undone. Make sure to download your README first if you want to keep a copy.
Alternatively, you can manually clear localStorage through your browser’s developer tools:
  1. Open DevTools (F12)
  2. Go to Application > Storage > Local Storage
  3. Select your domain
  4. Delete the relevant keys or clear all storage

Accessibility Features

Readme.so includes several accessibility features:
  • Keyboard navigation for drag-and-drop operations
  • ARIA labels on all interactive elements
  • Focus indicators on buttons and inputs
  • Screen reader support through semantic HTML
  • High contrast in both light and dark modes
The Monaco editor also includes comprehensive accessibility features inherited from VS Code.

Build docs developers (and LLMs) love