Alessandro Vettorel2k downloadsA desktop board for creating, organizing, and managing quick Markdown notes — categories, groups, labels, alarms, and more — all saved in a single file.

Quick Notes Board is a free, open-source Obsidian plugin for managing small notes fast, practically, and in a genuinely organized way. Instead of scattering quick thoughts across separate files, you get a dedicated board where notes live as draggable cards, sorted into categories and groups you define yourself — with instant search to put whatever you need right at your fingertips, no digging required.
It goes well beyond simple sticky notes: built-in alarms and reminders (including recurring ones and multiple times a day), password-protected encrypted notes for anything sensitive, and cross-cutting labels for finding and managing notes by what they have in common, regardless of which category they live in. Everything — every note, every setting — is saved in a single file, with optional data compression to keep it remarkably small on disk.
Customizable sounds for dozens of actions and smooth window animations round it out, for an experience that feels as good as it is fast — all of it, completely free.
☕ Enjoying Quick Notes Board? You can buy me a coffee to support its development — thank you!

Requires Node.js.
npm install
npm run build
This produces main.js in the project folder. Copy these three files into <vault>/.obsidian/plugins/quick-notes-board/ in your vault:
main.jsmanifest.jsonstyles.cssReload third-party plugins in Obsidian (or restart the app) and enable "Quick Notes Board" from the installed plugins list.
The top bar contains, from left to right:
| Element | Function |
|---|---|
| New note | Opens the creation window for a new quick note (title, category, optional group). |
| All | Shows/hides all active notes at once (not trashed nor archived). Automatically disables itself when there's nothing to show or hide. |
| Category buttons | One per registered category, colored like the category itself. Click to show/hide only that category's notes. If the category has groups, a small arrow next to it opens a menu with the individual groups. |
| Reorder | Tidies up the visible notes into a grid. Cycles through six modes on each click, in sequence: current position (reading order), smallest→largest horizontal, largest→smallest horizontal, smallest→largest vertical, largest→smallest vertical, and cascade. Size-based modes always stay within the visible width — only vertical scrolling is ever needed, never horizontal. In cascade mode the notes are stacked from the oldest (at the back) to the newest (in front), each shifted down by one title bar and slightly to the right, so every note's title stays readable; if the stack doesn't fit the visible height, a new cascade starts to the right of the previous one. Stacking order isn't saved, so after a restart it depends on the order notes are loaded (the positions are kept). A short message after each click tells you which mode was just applied. |
| Labels | Opens the labels window: create, rename, recolor, reorder (by dragging) and delete labels straight from the board, with the same options as the settings. |
| Info | Opens a summary window: total notes, categories, trashed/archived/encrypted notes, file size (and, when compression is on, the real vs. compressed size and the resulting savings). |
| Activity | Opens the Board Activity window: a resizable bar chart of notes created and characters written per day, browsable by month. |
| Alarms | Opens the alarm list — every note with an alarm set, at a glance. |
| Explore notes | Opens the Note Explorer — a searchable, collapsible overview of every note by category/group/subgroup. |
| Board structure | Opens the Board Structure diagram — a read-only flowchart of your categories, groups and subgroups. |
| Goals | Opens the Goals window: your daily, weekly, monthly and yearly goals with their progress, and your medals. It shows today's completed daily goals (for example 2/4). Can be turned off in the settings. |
| Archive | Opens the archive window. |
| Trash | Opens the trash window. |
| Close Quick Notes Board | Closes the board (same as clicking the ribbon icon again). |
Category/group/"All" buttons automatically disable themselves (appear faded, not clickable) when there are no relevant notes to show or hide.
If you've defined any labels, a second row appears below the category buttons with a colored chip per label, for filtering notes by label.
Each note is a small draggable card with:
| Icon | Action |
|---|---|
| Pencil | Renames the note's title (inline editing, in place). |
| Tag | Changes the note's category (and, if applicable, group). |
| "A" (typography) | Opens the Text appearance panel: size, font, text color, background color (see below). |
| Eye / pencil | Toggles between rendered preview and raw-text editing. |
| Archive box | Moves the note to the archive. |
| File-plus | Converts the quick note into a real note file in your vault, opening it afterwards. |
| Lock | Locks/unlocks the note with a password (see Password lock). |
| Trash | Moves the note to the trash. |
| Star | Marks the note as a favorite (only shown if favorites are enabled in settings). |
| Alarm clock | Sets or edits the note's alarm. |
| Maximize/restore | Expands the note to fill the whole board (or restores it to its original position and size). Never moves or resizes the note's saved data — it's a purely visual, reversible overlay. |
| Pin | Pins the note so it always shows up front, ignoring the usual show/hide-by-category behavior. |
| Tags | Opens the panel to assign/remove labels for this note. |
| X (fixed, always last) | Minimizes (hides) the note without deleting it. Comes back into view by re-clicking its category (or group) button in the toolbar, from the Note Explorer, or from a matching label filter. |
Performance: a note scrolled out of the board's visible area stops being rendered (and animated, if its category has an animated gradient) by the browser until you scroll back — invisible in normal use, but it keeps a crowded board light. Notes hidden by a category or individually closed cost nothing at all, already: they're never even added to the page in the first place.
Dragging: move a note by holding down its header. The last note you touched (moved, opened, edited) always comes to the front.
Resizing: from the left, right, and bottom edges, and the two bottom corners (not the top, which is reserved for dragging).
Zooming a single note's text: hover over a note's body and use Ctrl + mouse wheel (or pinch-to-zoom on a Mac trackpad) to grow or shrink just that note's font size, one step at a time, within the same 10–32px range as the appearance panel's slider. Saved automatically after a short pause. Normal scrolling (without Ctrl) is unaffected.
Positioning the cursor precisely: clicking (or double-clicking, depending on your settings) into a note's text places the cursor exactly where you clicked — not always at the end — and scrolls the note so that line is visible. Exact for plain text, headings, quotes, bullet/task lists, tables and inline formatting (bold, italic, strikethrough, highlight, inline code); a close approximation on deeply nested lists, numbered lists past the ninth item, and hand-padded table columns; links, wiki-links and fenced code blocks fall back to the previous, less precise behavior.
Compact icons (optional, from settings): when enabled, action icons stay hidden until you hover over the note, edit it, or drag it — for a cleaner look with many notes on the board. While hidden, the icon row also collapses to no width, so the title gets that space back and shows more of itself instead of staying cut short next to empty room; hovering smoothly brings the icons back and the title yields space to them again. Can be turned off at any time.
Footer bar: a thin strip at the bottom of a note, above the resize handles, appears whenever the note has at least one label assigned, showing its colored dots left-aligned. Designed to be extensible for future small additions.
From Settings → Note icons, you can:
Changes apply immediately to every open note on the board.
The note's body supports the same Markdown as regular Obsidian notes:
[[note name]]: clickable (open the note; Ctrl/Cmd+click opens it in a new tab) with hover preview, just like in a regular note. While editing, typing [[ (or Ctrl/Cmd+K) opens an autocomplete suggester that combines matching vault notes and other quick notes on the board — picking a quick note inserts a special link that, when clicked, brings that note into view and highlights it (even if it was hidden or archived).![[image.jpg]], resizable by dragging a handle on their corner.- [ ]: clickable, and the click genuinely updates and saves the note's text. A progress bar can optionally be shown above each checklist, with a customizable color gradient and a distinct color/text once it reaches 100%.While editing, the text stays a plain editable area (no live formatting as you type), to keep it light and reliable; once you leave editing mode, everything renders correctly.
Copy a range of cells in Excel (or any spreadsheet) and paste it while editing a note: it turns into a Markdown table on its own lines, with the first row as the header and the columns aligned. A cell with several lines keeps them as line breaks, and a | inside a cell is escaped. If what you paste does not look like a table (a single row or a single column, rows with different numbers of cells, text indented with tabs), it is pasted as it is. Once pasted, the table can be edited with the editor below.
While editing a note, right-click the text and choose Insert 2×2 table: a Markdown table with two columns (titles "Column 1" and "Column 2") and two empty rows is written at the cursor, on its own lines. Leave editing mode and use the table icon to fill it in with the table editor, or type directly in the text. The same menu has Cut, Copy, Paste and Paste as text; note that this menu replaces the system one, so spelling suggestions are not offered there.
Above every table in a note's preview there is a small table icon (left-aligned, a little faded until you point at it). Click it to open the table editor: a window with only that table, shown as a grid. The rest of the note does not appear, and the window has the title bar of the note's category, like the other note windows. The icon is not shown on locked notes, and not on very large tables (over 4000 cells): edit those in text mode.

The window, button by button
| Where | Button | What it does |
|---|---|---|
| Beside the header row | 🎨 | Opens the color window for the header row, and takes the color chosen. The color is solid, and the text color adjusts automatically for contrast. |
| Above each column | ◀ / ▶ | Moves that column left / right. Disabled on the first / last column. |
| Above each column | ✕ | Deletes that column. Disabled when it is the only one left. |
| Above each column | + | Inserts an empty column to the right of that column. |
| Above each column | 🎨 | Opens the color window for the whole column. The button takes the column's color. |
| Beside each row | ↑ / ↓ | Moves that row up / down. Disabled on the first / last row of data. |
| Beside each row | ✕ | Deletes that row. |
| Beside each row | + | Inserts an empty row right below it. On the header row it adds the first row of data. |
| Beside each row | 🎨 | The same window for the whole row. On the header row the palette opens the header color, as the button at the top. |
| Bottom right corner | handle | Drag it to make the window wider or taller; the grid takes the extra space, which is handy for wide tables. |
| Bottom | Delete table | Removes the whole table from the note, after a confirmation. It is applied at once (no need to press Save table) and cannot be undone from the editor. |
| Bottom | Undo | Takes back the last change (deletion, move, insertion, color or typed text), one step per press, up to 50 steps. Disabled when there is nothing to undo. |
| Bottom | Cancel (or Esc) | Closes the window and discards every change. |
| Bottom | Save table | Writes the changes into the note. |
The header row has no arrows and no cross: it cannot be moved or deleted, only edited. Colors of rows and columns are shown softly, so the text stays readable in light and dark themes; where a row and a column cross, the row's color wins, and the first row keeps its solid color. Colors follow their row or column when you move, insert or delete it, and they show in the note's preview too.
The color window
The 🎨 buttons (including the one of the header row) open a small window dedicated to the color:
#ffd966 (the # is optional, and the short form #fd6 works too). More colors… opens the system color picker for a new color.Working in the grid
| typed in a cell is saved as \|, and a cell cannot contain line breaks (a Markdown limit).The header color is saved in an invisible comment on the line right above the table, for example <!-- qnb-table header=#4a90d9 cols=2:#ffd966 rows=1:#f4cccc --> (the colors of rows and columns are saved there too, counting from 1): it does not show in the preview, and the table stays a normal Markdown table. If you see that line in text mode, leave it as it is; if you add or remove rows or columns by hand, the colors can shift by one position.
Good to know:
| typed in a cell is saved as \|, and a cell cannot contain line breaks (a Markdown limit).From the "A" panel on each note:
All changes apply live as you adjust them.
Categories are managed from Settings → Quick Notes Board, and most of their options can also be changed straight from the board, from the category structure window. For each one you can define:
lucide.dev/icons to search), and a dedicated color for the icon itself.At least one category must always remain.
Right-click a category button in the toolbar to open the structure of that category. The title bar of this window, like that of the Category colors and Rename category windows below, is drawn exactly like the title of a note of that category: its color or gradient (animated too), its icon and icon color, and its text color. The bar sits flush against the top edge of the window, across its full width, and the window's close button (X) is inside it, on the same line as the title, like the buttons in a note's header. That way it is always clear at a glance which category you are working on. The window shows: its groups and subgroups as a tree, with the number of notes in each branch, and the totals for the whole category (notes and characters; encrypted notes are left out of the character count).
At the bottom left, opposite Close, the Rename category button opens a small window with the current name. Type the new one and press Enter or Rename; Cancel leaves everything as it was. The new name applies to the category and to all its notes, archived and trashed ones included, exactly as when you rename it from the settings, and the structure window shows it right away. An empty name, or one already used by another category (capital letters don't count), is refused with a message.
Next to it, the Category colors button opens a window with all the look options of that category, the same ones you find in the settings:
This is meant to let you change a category's whole look straight from the board, without leaving it and without going through the settings. Every choice is saved right away and you see it on the board behind the window. The color pickers save when you release them: while you drag, only the preview in the window moves, so the board is not redrawn at every shade.
The windows opened from a note have the same title bar as the category windows, with the colors of the category the note belongs to: its color or gradient (animated too), its icon and icon color, and its text color. They are the info panel (right-click the note's title), Alarm and reminder, Change category, Text appearance, Lock and Unlock, Labels, and the window of a ringing alarm. The title shown in the bar is the one the window already had (for the info panel, the note's title). This gives the board a consistent look and makes it clear at a glance which category a window belongs to.
Each category can have its own internal breakdown into groups (and nested subgroups), managed in the dedicated section under each category in settings (name, add, rename, delete, drag to reorder). A group always inherits its parent category's color and icon — it has no appearance of its own.
When creating a note or changing its category, if the chosen category has groups defined, a second menu appears to assign it to one of them (or none). Changing a note's category automatically resets its group.
In the toolbar, categories with groups show a small arrow: it opens a popup menu with the groups, each individually showable/hideable, independently from the rest of the category.
Labels are a flat, cross-cutting tagging system, independent from categories/groups/subgroups — a note can carry several labels at once, useful for finding notes that share something in common regardless of where they're organized (e.g. "Urgent" and "Waiting on someone else" together, across completely different categories).

The toolbar's "Activity" button opens a resizable window with two bar charts, browsable month by month: notes created per day and characters written per day, plus the running totals for the selected month. It's a quick way to see, at a glance, how many notes and how many characters you've actually created and typed in the current month — a simple but effective way to track your writing/working pace over time, spot your most productive days, or just confirm you're keeping up a steady habit. Hovering over a bar shows the exact value for that day; the colors of both charts are customizable from settings.
At the bottom-left of the window, the "Hide days with no activity" toggle removes every day with no notes created and no characters written from both charts, so they show only the days you actually worked (bars are capped to a sensible width when few days remain, and a message is shown if the month has no activity at all). The totals are unaffected, and the toggle's state is remembered.
Next to it, the "Show modified notes" toggle swaps the first chart for notes modified per day, on the same calendar (the characters chart stays as is, and the monthly total changes accordingly). Like the other toggle, its state is remembered between openings. Modifications come from a dedicated daily activity log — not from each note's last-modified date, which would only remember the latest edit — so a note edited on several different days appears on every one of them. Each note counts once per day, however many times it's saved; saving changed text, ticking a checklist item, and resizing an embedded image count, while locking, moving, or recategorizing a note doesn't. History from before this version can't be reconstructed: the log starts from each existing note's last known modification, and is accurate from then on. The log lives in the plugin's data.json (not in the notes file), and keeps past activity even if a note is later trashed.

Goals are not a game: they are a simple way to spur you on to do better. The idea came from reading a book about dopamine. Having a target to reach motivates us to put effort into whatever we do, and reaching it is a reward that makes us want to keep going. Here it works like this: you set your targets, the board keeps count by itself, and every goal you reach earns you a medal. They are there to give you a small push to write and keep your notes in order, a little every day.
The Goals button in the toolbar opens the window, with one tab per period (Today, Week, Month, Year) and a Medals tab. The window can be resized with the handle in its bottom-right corner (the board remembers its size), so you can place it wherever suits you best. Each goal shows a progress bar, the count (for example 3/5) and a check mark when it is done. On the button itself you see today's daily goals completed, such as 2/4; when all are done it turns gold.
Press New and choose:
| Field | Meaning |
|---|---|
| Name | Optional. If left empty, the goal is named automatically, for example "Create new notes: 5 per day". |
| What do I have to do? | A cascading menu with four groups. Notes: create new notes, edit different notes, write characters, delete notes, archive notes, add notes to favorites, duplicate notes, change the category of notes, move notes, resize notes, close notes. Labels: assign labels, add labels, delete labels, organize labels. Alarms: create an alarm, have alarms ring, delete alarms, turn off an alarm, turn an alarm back on. Activity: finish a Pomodoro, days with activity (a day counts if you did any of these), empty the trash, restore notes from the archive, do searches, tidy up the notes, check the board activity, use a widget. The button shows the group and the choice, for example Alarms › Turn off an alarm. |
| How many…? | The number to reach, from 1 to 9,999,999. The question changes with the action: "How many characters?" for writing, "How many notes?", "How many labels?" and so on. |
| In which period? | Per day, per week (Monday to Sunday), per month or per year. |
| Only for the category | Optional, for creating and editing notes: count only the notes of one category. |
| Only for the label | Optional, for assigning labels: count only one label (for example "assign 3 Urgent labels per day"); left on "Any", every label counts. |
You can create as many goals as you like, edit them with the pencil and delete them with the bin (press it twice to confirm). If you change a goal in the middle of a period, the progress already made stays.
Reaching a goal in a period earns one medal for that goal and that period, and the board celebrates it: a large card opens above everything else, with the background blurred and the keyboard focus on it, only while the Quick Notes Board is in front, with the medal, the name of the goal, fireworks and the celebration sound; you close it with the Congratulations button. Every goal has its own celebration, one at a time (always after the action that earned it is finished and shown on the board): if you reach several, they wait in a queue and the next one starts right after you close the previous one. The celebrations never appear outside the board: if you reach a goal while you are in another note or plugin (for example when an alarm rings), the medal is saved at once but the celebration waits, with no window and no sound, and starts as soon as the board is in front again. If you switch away in the middle of one, it resumes from where it was when you come back. The queue is kept even if you close Obsidian. The medal is bronze for daily goals, silver for weekly, gold for monthly and a trophy for yearly ones. Each goal can be earned again in every new period.

The Medals tab shows how many you have of each kind, your streak (the consecutive days, up to today, in which you completed at least one daily goal; if you skip a day, it starts again) and your best streak, and a few milestones that unlock along the way (first goal, 10 and 100 goals, streaks of 3, 7 and 30 days). Medals stay even if you delete or change the goal.
The Medals tab tiles are clickable: pressing Bronze, Silver, Gold or Trophy shows which goals earned that kind of medal, how many times each, and the day, week, month or year of each one (most recent first); hover a line to see the exact date and time. If a goal was deleted, its last name is kept next to the medals it earned (medals earned before this feature show as Deleted goal). The milestones are clickable too: a reached one shows when it unlocked and what produced it (the medals in order for the totals, the days in a row and the goals completed each day for the streaks); a locked one shows your progress and how much is missing.
The Manage button at the bottom left of the Goals window offers four options, each asking for confirmation and telling you how many items are involved:
| Option | Effect |
|---|---|
| Delete this tab's goals | Deletes the goals of the period you are looking at (not shown on the Medals tab). Medals stay. |
| Delete all goals | Deletes every goal. Medals stay. |
| Reset medals and streak | Removes all medals and the streak, and keeps your goals. Goals already completed in the current period do not earn a new medal. |
| Reset everything | Deletes the goals, the medals, the streak and the counters. It cannot be undone. |
In the settings, the Goals section lets you turn the whole feature off (the button disappears and nothing is counted or saved), hide the counter on the button, turn off the celebration, and turn off the built-in sound. That sound is included in the plugin, so it needs no file; in Sound effects you can choose your own sound for reaching a goal instead (it takes priority), and one for opening the window.
Goals, medals and the daily counters are saved in the plugin's data.json, not in your notes file, and they are light: nothing runs in the background; the progress is calculated only when you do something that can change it or when you open the window.

Set from the alarm clock icon on a note. The panel lets you configure:
How it behaves: once the alarm window opens, the note gets a blinking colored border (customizable in settings) and a looping sound alarm starts, together with an alarm dialog window — it keeps ringing until you stop it, using the dialog's Stop button (closing the dialog with the X or Esc counts as Stop) or the note's alarm icon. With a single daily time, stopping it means it will ring again after the configured interval if you don't fully resolve it. With multiple times in the same day, stopping it resolves every time slot due so far at once, and it then stays silent until the next scheduled time arrives — it never resumes nagging in between. Border and sound are always checked on the same 5-second cadence, so they never fall out of sync with each other.
Turn an alarm off: in the note's alarm panel, the Turn alarm off button (between Save and Remove alarm) switches the alarm off without deleting it. A turned-off alarm keeps its date, times, repeat, "Skip Saturday and Sunday" setting and its Repetitions and Last alarm counters, but it does not ring, does not make the note's border blink, does not send notifications and does not move forward on its own, not even after Obsidian was closed for days. A banner at the top of the panel says so, and the button becomes Turn alarm on; the click is saved at once and the panel stays open. On the note, the alarm icon turns into a crossed-out alarm clock, and in the alarm list the row is greyed out with Off in the new Status column. When you turn an alarm back on and its date has already passed, it does not ring for what you missed: if it repeats, it jumps to its next date (counting from the date it had; moved on if it falls on a weekend with "Skip Saturday and Sunday" on), and a message shows the new date; if it does not repeat, it moves to today and rings as an overdue alarm would. Editing the alarm and pressing Save keeps it off; Remove alarm deletes it for good, off or not. Turning an alarm off can also be a goal ("Turn off an alarm").
Quick snooze: while an alarm is ringing, the alarm dialog shows the note's name, a duration dropdown (1, 2, 3, 4, 5, 10, 15, 20, 25, 30, 45 minutes or 1 hour), a Snooze button and a Stop button; the dropdown remembers the last duration you used. If the alarm has a repeat set, a third button, Postpone to next schedule, is also shown — the same action as the button of that name in the note's own alarm panel, without having to open it: it moves the alarm straight to its next due date and time (moved on to Monday if that date falls on a weekend and "Skip Saturday and Sunday" is on), doesn't touch the Repetitions counter, and doesn't schedule anything to happen again in a few minutes like the duration dropdown does. The dialog is a regular window, so while it's open it takes the focus — if it fires while you're typing, close it or pick an option before carrying on. Clicking the note's alarm icon while it rings opens the same choices as a menu, plus "Stop" and "Open alarm panel". Sound, blinking border and dialog pause together and come back when the time is up — the scheduled date doesn't change (except with "Postpone to next schedule", which is precisely about changing it). For notes with several times in the same day, the time isn't marked as done, so it rings again after the snooze. If a snooze would go past midnight and the alarm's window ends today, the alarm moves to the next available day (respecting "Skip Saturday and Sunday") and a message tells you. Choosing "Snooze" is saved with the note, so it survives a restart of Obsidian; the alarm list shows "Snoozed until HH:MM" instead of the countdown, and editing, postponing or removing the alarm cancels any pending snooze.
Repetitions counter: every time an alarm actually fires (notification and sound start), the note's counter goes up by one — including re-rings after the configured interval, and each individual time of a multi-time day. Alarms missed while Obsidian was closed are not counted, since they never rang. The counter is kept when you postpone to the next alarm or edit the alarm, and is reset only when you remove the alarm from the note.
Last time it rang: the Last alarm column of the alarm list, right after Repetitions, shows the date and time the alarm last fired (or a dash if it never has), so you can always tell whether a given time rang or not. Like the counter, it is saved with the note and reset only when you remove the alarm.
Skipped times notice: if Obsidian was not running when a time of today's alarm came due (for example you open Obsidian at 10:00 and the 07:30 time has already passed), that time still does not ring late — but the next time you open the board, the "Missed reminders" window lists it, so a skipped time never goes unnoticed. A time that already rang before a restart is not reported, and neither is an alarm you set today for a time that has already passed.
Alarm list: the toolbar's "Alarms" button shows every note with an alarm set, grouped by category/group/subgroup, with its due date, time(s), a live "time remaining" countdown (days/hours/minutes, or "Overdue"), and a Repetitions column showing how many times that alarm has actually rung so far, a Last alarm column with the date and time it last rang, and a Status column (On or Off, see Turn an alarm off above). Alarms that are turned off are greyed out, show "—" instead of the countdown, and a line above the table says how many there are. Clicking a row opens that note's alarm panel directly. The window can be moved by dragging its title and resized with the handle in its bottom-right corner (the board remembers the size, not the position: it opens centered every time); the table scrolls inside it when there are many alarms.
A widget is a note that, instead of text, shows a small live tool: a clock, a calendar, a countdown, a stopwatch or a pomodoro timer. Widgets are meant as mini, self-contained utilities that help you keep an eye on things right from the board, working in the background while you do something else.
There are five widgets: Clock, Calendar, Countdown, Stopwatch and Pomodoro.

From the New note window: right under the title there is a Widget toggle. Turn it on and a dropdown appears to choose the widget type. Press Create: the note is created with the widget already written and ready to use, with default values (stopwatch and pomodoro also get their own id, see below). If you leave the title empty, the note takes the widget's name.
By hand: a widget is just a fenced code block, with QNBWidget as its language, inside any note. Each line is an option written as name: value; the only required one is type:
```QNBWidget
type: clock
```
To change a widget, open the note for editing: you'll see this text, and you can change any option. When you leave editing, the widget is drawn again with the new options.
name: value. Names are not case sensitive. Blank lines are ignored, and so are lines starting with #, which you can use for comments. Every option except type is optional: whatever you leave out takes its default value.QNBWidget block is also drawn in your regular Obsidian notes.Time and date, updated in real time.
```QNBWidget
type: clock
seconds: true
hour12: false
date: true
timezone: Europe/Rome
label: Rome
```
| Option | Values | Default | What it does |
|---|---|---|---|
seconds |
true / false |
true |
Shows or hides the seconds. |
hour12 |
true / false |
false |
true for the 12-hour format with AM/PM, false for 24 hours. |
date |
true / false |
true |
Shows or hides the date line under the time. |
timezone |
a time zone name, such as Europe/Rome, America/New_York, Asia/Tokyo |
your computer's | Shows the time of another city. The zone name is shown under the date. |
label |
any text | none | A title above the clock, handy to tell several clocks apart. |
To see the time in several cities, put several clock blocks in the same note, each with its own timezone and label.
A month calendar with today highlighted.
```QNBWidget
type: calendar
weekstart: monday
month: 2026-10
```
| Option | Values | Default | What it does |
|---|---|---|---|
weekstart |
monday / sunday |
monday |
The first day of the week. |
month |
YYYY-MM, such as 2026-10 |
the current month | The month shown when the widget is drawn. |
Days, hours, minutes and seconds left to a date.
```QNBWidget
type: countdown
label: Christmas
target: 2026-12-25 18:00
done: Merry Christmas!
seconds: true
```
| Option | Values | Default | What it does |
|---|---|---|---|
target |
YYYY-MM-DD or YYYY-MM-DD HH:MM (also HH:MM:SS), local time |
required | The moment to count down to. With the date only, the countdown ends at the start (00:00) of that day. |
label |
any text | none | A title above the numbers. |
done |
any text | "Expired" | What is shown once the date has passed. |
seconds |
true / false |
true |
Shows or hides the seconds box. |
done message right away.A stopwatch with laps, that keeps counting even if you close the board.
```QNBWidget
type: stopwatch
id: work
laps: true
label: Report
```
| Option | Values | Default | What it does |
|---|---|---|---|
id |
a short name, without spaces | none | Gives the stopwatch a name under which its state is saved (see below). |
laps |
true / false |
true |
Shows the Lap button and the list of laps. |
label |
any text | none | A title above the time. |
MM:SS.d (with tenths of a second), or H:MM:SS.d after one hour.id, a running stopwatch keeps counting even if you close the board or Obsidian, because it counts from the moment it started, not with a counter. When you come back, the elapsed time is right. The state is saved only when you press a button.id, the state is kept only while Obsidian stays open, and two identical blocks share it. Give every stopwatch its own id. A note created from the New note window already has a random one. If you duplicate a note, the copy keeps the same id, and so shares the same stopwatch: change it by hand to make it independent.A timer for the Pomodoro technique: work periods and breaks, with a notification when each one ends.
```QNBWidget
type: pomodoro
id: study
work: 25
break: 5
longbreak: 15
cycles: 4
label: Study
```
| Option | Values | Default | What it does |
|---|---|---|---|
id |
a short name, without spaces | none | The name under which its state is saved (see below). |
work |
minutes, 1 to 600 | 25 |
Length of a work period. |
break |
minutes, 1 to 600 | 5 |
Length of a short break. |
longbreak |
minutes, 1 to 600 | 15 |
Length of the long break. |
cycles |
1 to 12 | 4 |
How many work periods before the long break. |
label |
any text | none | A title above the timer; it is also shown in the end-of-phase notification. |
cycles completed work periods comes the long break, and the count starts over.MM:SS, a progress bar, a row of dots showing the work periods completed in the current round (all filled during the long break), and the total number of pomodoros completed..obsidian/plugins/quick-notes-board/), press Refresh if Obsidian is already open, pick the file from the dropdown, and use the Play button to hear it. Left empty, the pomodoro plays the alarm sound (the one of Alarm notification), so it never ends in silence unless you also leave that one empty.id, the timer survives closing the board and closing Obsidian (a running phase ends at its exact time). The state is saved only when you press a button or a phase ends.id, the state is kept only while Obsidian stays open, and two identical blocks share it. As for the stopwatch, give each pomodoro its own id, and change it by hand in a duplicated note.id is saved in the plugin's data.json. Deleting a widget note leaves its small saved state behind, which is harmless.The toolbar's "Explore notes" button opens a complete overview of every quick note (trash and archive excluded), organized by category → group → subgroup, with each category's icon shown before its name (and before every group/subgroup under it) for quick visual orientation. A search box at the top filters by title or label name.
All categories start collapsed — only category names are visible until you click one to expand it. Searching automatically expands any category containing a match, and once expanded that way it stays expanded even after you clear the search (no memory between separate openings of the window, though).
Clicking a note brings it into view on the board, highlighted — even if it was hidden or archived.

The toolbar's "Board structure" button opens a resizable, read-only flowchart: a box per category (full color) with its groups and subgroups branching below it (progressively lighter shades of the same color, so you can tell the depth apart at a glance), connected by lines — no notes shown, just the organizational skeleton, for getting your bearings when you have many categories and groups. Nothing is clickable; it's purely informational.
Clicking the trash icon on a note does not delete it permanently: it moves to the "Trash" window, reachable from the toolbar, where for each note you can:
Each entry shows its size in bytes (exactly as it would be written to disk), and the window's footer shows the total space that would be reclaimed by emptying the trash. The "Empty trash" button deletes everything trashed in one go.
Works similarly to the trash, but for a different purpose: archiving a note hides it from the board without marking it "to be deleted". From the "Archive" window, each note can be:
Archived notes are always excluded from the board's normal filters and views.
Any note can be individually protected with a password, via the lock icon.
From settings you can also customize the background behind the notes:
Fullscreen mode (optional): when enabled, opening the board closes Obsidian's side panels for more room, and reopens them automatically when you close the board — but only the ones that were actually open beforehand.

From Settings, you can enable compressing the data file on disk (typically a 70–90% size reduction, since the file's repetitive metadata compresses especially well).
⚠️ While compressed, the data file is no longer readable or editable with a plain text editor — only the plugin can interpret it. Keep this in mind before enabling it if you value being able to open the file by hand.
The plugin can play a customizable sound for dozens of distinct events, organized by group in Settings → Sound effects:
How it works: audio files (mp3, wav, ogg, m4a) must be copied manually into the plugin's folder (.obsidian/plugins/quick-notes-board/). Each row in the Sound effects section is a dropdown listing the files found there — no file picker, no automatic copying: several events can share the same file this way without duplicates. The "Refresh" button re-scans the folder if you add files while Obsidian is open.
The plugin's interface (buttons, labels, windows, messages) is available in Italian (default) and English, selectable from settings and applied immediately, no need to restart Obsidian. The data file's format and the names you assign yourself (categories, groups, labels, note titles) are never automatically translated: they always stay exactly as you wrote them.
When Quick Notes Board is updated to a new version, a window opens once with the news of that version — the same text you find in the Version history below. The window lists the whole version history, newest first: the versions that are new to you are open at the top, the older ones are collapsed and expand with a click. If you skip several versions, all the ones you missed are open. It never appears on a fresh install, and never again for a version you have already seen.
The news text is written in English, while the labels of the toggle, button and command follow the plugin's language.
All active, trashed, and archived notes are saved in a single, human-readable file, Quick notes board.md, inside the plugin's folder — organized by category, with each note's position, size, and every other property (font, colors, encrypted state, group, labels, alarm settings, etc.) encoded in a %% QNB ... %% block next to its title and text. The file is designed to be easy to read, but it's best not to edit it by hand, to avoid breaking its structure. The state of widgets that keep one (stopwatches and pomodoros with an id) is not in this file: it lives in the plugin's data.json, together with the settings.
If data compression is enabled, the file instead starts with a %% QNB-COMPRESSED v1 %% marker followed by compressed, base64-encoded content — no longer human-readable directly, but still auto-detected correctly regardless of the current setting.

window.requestAnimationFrame (correct behavior in popout windows) and the confirmation button in the Goals window uses the current destructive-button style.<!-- qnb-table header=#4a90d9 cols=2:#ffd966 rows=1:#f4cccc -->; if you add or remove rows by hand in text mode, the colors can shift by one position.| in a cell is escaped. Text that does not look like a table (a single row or column, rows with different numbers of cells, indented text) is pasted as it is.<!-- qnb-table header=#4a90d9 -->) and shows in the preview. In text mode you will see that line: leave it as it is.| typed in a cell is saved as \|, and a cell cannot contain line breaks (a Markdown limit). Tables inside code blocks are ignored. If a note has a table inside a quote or a list, the button is not shown for that note's tables: edit them in text mode.QNBWidget code block with a few option: value lines, so you can also create or adjust them by hand. See the Note widgets section of the README for every option.id, even if you close the board or Obsidian.New: Archive and Trash buttons in the note's info panel (right-click the title), next to Duplicate note — always act on that specific note, even with other notes selected elsewhere. Meant to make the note header's own Archive/Trash icons safe to hide for a cleaner title bar: with these here, both actions stay one right-click away either way.
Improved: notes scrolled out of the visible area of the board are no longer rendered or animated by the browser until you scroll back to them — helps on crowded boards, especially with several animated category gradients running at once.
New: Title bar animation toggle for category gradients, with a 1-10 second duration — makes the gradient slide back and forth instead of staying still. Off by default; a plain CSS animation with no background timer, skipped when your system's "reduce motion" is on. A further toggle restricts the animation to when you're hovering the note, editing it, or dragging it, instead of always.
New: Duplicate note button in the note's info panel (right-click the title), left of Close — a full copy of the note, placed right next to the original.
Fixed: with Compact icons on, the note title stayed visually cut off even once the icons had faded away, because they kept reserving their full width. The hidden icon row now collapses to no width as well, so the title expands to use the freed space.
New: optional background gradient for categories. In Settings → Categories, right after the colors, a Background gradient toggle turns the note title bar of that category from a single color into a gradient running from the category color to an end color you choose, in one of six directions (left→right, right→left, top→bottom, bottom→top, and the two 45° diagonals). A live preview bar under the category colors — always visible, for a single color too — shows the result while you adjust colors, icon or gradient. With the toggle off nothing changes at all; turning it off doesn't erase the end color and direction, so they come back when you turn it on again. Title and icon text color are chosen from the average of the two colors — override it with the category's title color if a very light-to-dark gradient makes it hard to read.
New: quick snooze for alarms. When an alarm rings, a proper dialog window now opens (instead of the dark notification) with the note's name, a duration dropdown (1–5, 10, 15, 20, 25, 30, 45 minutes, 1 hour) and Snooze and Stop buttons; the alarm icon of a ringing note opens the same choices as a menu. The last duration used is preselected next time, snoozes survive a restart, the alarm list shows when a snoozed alarm resumes, and a snooze that would go past midnight moves the alarm to the next available day.
Improved: stopping or snoozing an alarm from the note's icon now also closes its dialog, and a second dialog can no longer pile up for the same note.
New: the alarm dialog gets a "Postpone to next schedule" button for alarms that repeat (daily, weekly, monthly, yearly) — the same action as the note's own alarm panel, without having to open it.
| :--: | ... |) — invisible once rendered, and of unpredictable length since its dashes can be padded to any width — is now read back from the actual note text instead of guessed, so rows after the header land exactly. Links, wiki-links, deeply nested/numbered lists and fenced code blocks keep the previous, best-effort behavior — never worse than before, just not yet exact.New features for the Alarms list and the Board Activity charts.
Bug fixes and a new feature for multi-time daily reminders.
:has() selector, which can cause performance issues) — replaced with an explicit class with no behavior change.Screenshot00.jpg) — no code changes.Bug fixes and visual polish, no new features.
main.js, manifest.json, styles.css) whenever a version tag is pushed.Maintenance release: no user-facing feature changes, but requires Obsidian 1.13.0 or later (was 1.7.2).
First public release. Highlights include:
Quick Notes Board is free and open source. If it makes your day a little easier and you would like to support its development, you can ☕ buy me a coffee. Thank you!
npm run dev
Automatically rebuilds on every change to the source files (main.ts, view.ts, settings.ts, modal.ts, i18n.ts, crypto.ts, tables.ts).
| File | Contents |
|---|---|
main.ts |
The main plugin class: loading/saving data and settings, categories/groups/labels/sounds/background management, the alarm-checking engine, data file compression. |
view.ts |
The board itself: toolbar, notes, dragging, resizing, rendering, note action icons. |
settings.ts |
The settings panel. |
modal.ts |
The dialog windows (new note, change category, text appearance, lock/unlock, trash, archive, alarm list, note explorer, board structure, due-date panel, label assignment, and more). |
crypto.ts |
Encryption/decryption of note content. |
changelog.ts |
The news shown in the "What's new" window after an update, and the logic deciding which versions to show (no dependency on Obsidian). |
widgets.ts |
The note widgets: option parsing, the five widgets, their saved state and the shared timer (no dependency on Obsidian). |
tables.ts |
Markdown tables of the notes: finding them in the text, reading, rewriting and the row/column operations (no dependency on Obsidian). |
goals.ts |
The goals: periods, progress, medals and streaks (no dependency on Obsidian). |
goalsModal.ts |
The Goals window and the window to create or edit a goal. |
goalsCelebration.ts |
The celebration shown inside the board when a goal is reached. |
fireworks.ts |
The fireworks animation of that celebration (no dependency on Obsidian). |
goalsSound.ts, goalsSoundData.ts |
The celebration sound included in the plugin (embedded in the code, because only main.js, manifest.json and styles.css are installed). |
windowTools.ts |
Dragging and resizing of the plugin's windows (no dependency on Obsidian). |
snooze.ts |
The quick-snooze durations and the deadline calculation (no dependency on Obsidian). |
gradient.ts |
The category background-gradient directions, color validation and CSS generation (no dependency on Obsidian). |
i18n.ts |
Translation dictionaries (IT/EN) and the translation function. |
styles.css |
All of the plugin's visual styling. |