MojoPad

Searching

Type in the toolbar search box (⌥⌘F) and results appear as you type, like an email client: matching pages listed above, a live preview of the chosen one below — and the preview is directly editable, so you can fix a typo without leaving the results — with one exception: a board, a mind map or a protected page is shown rather than opened for editing, because those are written where they live and not in a side panel. Every match is highlighted in the preview and the first one scrolls into view. Press Return to also run the semantic “Related by meaning” pass.

A paper reads in the preview too. When the result is a PDF, a book or a saved web page, the pane gives you the document itself — the same reader the page uses — opened at the word you searched for, with every match marked and a count you can step through. For a wiki built on a library of papers that turns the results list into a reading surface: run a search, walk the list, and read each paper in place without opening any of them.

Getting back. Double-click a result (or press Open in the preview) and the page takes over the window. The back arrow returns you to the search you came from, with the same results still there — press it again and you carry on back through the pages you were reading before.

Results read like an email client — every match highlighted in a preview you can edit in place.

The query language

QueryFinds pages…
plausible labscontaining both words, anywhere, any order
"plausible labs"containing that exact phrase, in order
cats OR dogscontaining either word (OR must be uppercase)
cats NOT dogscontaining cats but not dogs
Pre* *ing *ish*wildcards at either end, or both
((Foo Bar) NOT baz) OR *piesparentheses group anything

A bare word matches the beginning of longer words too — mojo finds a page named MojoPadReview — so joined WikiWord names are as findable as spaced ones. When you need an exact word and nothing longer, quote it: "mojo". Forgot any of this mid-search? Click the ? on the search box — the whole grammar, including everything below, lives in a one-glance cheatsheet right where you type.

Searching by time

Add a time window to any search — alone or alongside words:

TermKeeps pages…
during:july during:2025-q3 during:weekedited in that period (month, quarter, year, week, today, yesterday…)
after:2026-01-15 / before:marchedited after / before a date
created:2025created in the period (instead of edited)
edited:monthsays “edited” out loud — same as the default
about:2024 about:q3whose content talks about that time — dates written in the page count, not just when you touched it

So project alpha during:q3 is “my Project Alpha notes from that quarter,” and about:march-2024 finds the meeting page that mentions March 2024 even if you wrote it last week. Dated searches sort newest-first, like a timeline. The same time windows work when you Ask your wiki a question — “what was I thinking about in July?” scopes its reading to July.

Words, and how they combine

Two words together mean both: carpal release keeps pages carrying each of them, anywhere. AND says the same thing out loud, and is worth typing when a query gets big enough to read back: (carpal OR cubital) AND endoscopic. OR keeps either side, NOT excludes what follows it, and brackets group. All three are uppercase — so searching for the ordinary words and, or and not still works.

Quotes are an exact phrase in order — "carpal tunnel release" — and * stands in for the rest of a word: cubit*, *ectomy.

Searching by field

TermKeeps pages…
tag:clientcarrying that tag
in:research (or folder:)filed under that folder — subfolders count
type:pdf type:canvas type:markdownof that kind (pdf, epub, book, canvas, markdown, plaintext, richtext, page)
name:budgetwith the word in the page name
prop:Year=2025 prop:Authors=Kelly prop:Titlecarrying that value in one of your own fields — and the bare form, with no =, keeps every page that has the field filled in at all
sort:edited / sort:created / sort:name— not a filter; orders the results

prop: matches what you see. A field that holds a link to another page shows that page's name, and a checkbox shows Yes — so prop:Journal=Nature and prop:Reviewed=Yes are what to type, not whatever the file happens to store underneath. It reads a value a page inherits from its kind as well as one written on the page itself, which is what makes a library whose shared columns live on a kind searchable at all.

These take the operators too. Several terms together still mean andtype:pdf prop:Year=2025 keeps papers that are both — but OR, NOT and brackets work on them exactly as they work on words. So NOT prop:Year finds the papers with no year, tag:draft OR tag:review keeps either, and (tag:draft OR tag:review) AND prop:Year=2025 means what it reads as. A search may begin with NOT, which is how you would say "the ones without".

sort: is the exception, and deliberately: it orders results rather than choosing them, so there is nothing about it to negate.

Taking results back to what you are writing

You searched to find the six papers a paragraph needs. Every result carries a checkbox. Check the ones you want and a bar appears at the top of the list: Insert puts links to them into the page you were writing in — at the cursor you left, as a list or as A, B and C in the line — and Copy puts the same links on the clipboard instead, in the [[Name]] form that becomes a link again wherever you paste it back.

Checking a result does not open it: the row still previews on a click and opens on a double click, so choosing six papers is not a tour of six documents.

A property that holds prose

Some answers are paragraphs. A Summary, an Argument, a What I think of it — give the property the Note (formatted) type and it holds writing rather than a value: bold and italics, lists, links to your other pages.

It is a real writing surface. Type [[ to link a page, / for the insert menu, select words for the formatting bar — the same things that work in the page body.

Two things worth knowing. The words are what everything else sees: a table sorts by them, a search matches them, an export writes them, so the formatting is for reading and never changes what the value is. And ⌘Z belongs to the page, not to the field — a change inside a property is undone by editing it back, the same way a page title is.

What kind of document it becomes

A paper, a report, a letter and a chapter are four different objects, and the differences are not decoration. A paper leads with its title, its authors and where it appeared, and numbers its sections so a reader can be told to look at 3.2. A letter has no title at all — a date, a narrower column, and headings that stop shouting, because a letter is one voice. A chapter indents the paragraphs that continue a thought and not the ones that start a section, which is the pair of rules that makes a page look like a book. A report puts a rule under its heading and gives itself room for tables.

Choose one under Exports as in a page's Info panel. It applies to HTML, PDF and Word.

Three ways to answer, and they stack

The page's own choice wins. Failing that, its kind answers — so if you keep a Kind: Paper and give it a template, every paper exports that way without anybody choosing each time, and the row tells you which kind it came from. Failing both, the setting in Settings ▸ Exporting answers, which is what happens for most pages, because most pages have no kind.

Choosing Plain is a real answer, not the absence of one. A page inside a Kind: Paper can be exported plainly without being taken out of its kind — leave the row on Use my kind's and the kind decides again.

Compiling a folder asks once, in the compile window, and uses one shape for the whole file. That is deliberate: a template numbers sections and indents paragraphs from the top of a document, so five of them inside one file would restart the counters in the middle.

What a Word file can and cannot carry

A Word file has no stylesheet, so a template reaches it differently. The indenting carries across properly — the paragraphs that continue a thought, not the ones that start a section. Numbered sections do not, and rather than let you find that out later, they are named in the report you already get after an export.

Paper size, margins and page numbers are not part of a template. Journals ask for those, and Settings ▸ Exporting ▸ Paper is where you answer once — a template that set its own would be a second answer to the same question.

Searching your other wikis

You are looking for something and you are not sure which wiki you put it in. Search the one you have open, and directly under the results header is Also search your other wikis, with Choose… beside it for deciding which. They are read from disk at the moment you ask — nothing is indexed, and nothing is kept. Results are grouped by wiki, and a hit opens the page in the wiki that holds it.

Two things it will tell you rather than leave you to work out. A wiki with a password is not searched, and is named — silence there would read as "nothing in it matched", which is a different claim. And prop: and the date terms are not carried across: a property is defined by the wiki that holds it, so a search using them is answered out there on its words alone, and the results say so before you press the button.

Saving a search as a smart folder

Every results page has a ☆ Save button: name it, and the query becomes a 🔎 entry under Folders that re-runs live every time you click it. Because it re-runs, time windows stay current — a saved during:week is always this week. It's how you make views like “open questions tagged client, newest first” without maintaining anything.

Related by meaning

Below the keyword hits, MojoPad lists pages that are semantically related to your query — found by comparing meaning, not letters, using a local embedding model. Searching for "devices that extend human memory" finds your pages about the memex and Douglas Engelbart even if none of those words match. This works out of the box — MojoPad brings its own model for it; see Local AI. Encrypted pages never appear in either list.

Inside your PDFs and books

Search reaches into your imported files, not just their names. A second or two after you import a PDF or ePub, MojoPad reads its text in the background and folds it into the index — so a word buried on page 200 of a book turns up, with a snippet, like any note. Click a PDF result and it opens right at the match, the word highlighted (see below). A scanned PDF with no real text layer can only be found by its file name — there's no text to read.

Find in page — and in a PDF

⌘F opens the in-page find bar with Replace, Replace All, next/previous, and a running “3 of 7” match counter. Esc closes it.

Hover a PDF or book and ⌘F opens a find bar for the document instead: type a word to jump to the first match with every hit highlighted, / ⇧⏎ (or the ↑/↓ buttons) to step through them, Esc to close. The counter shows every occurrence in the whole document, and it works the same in the main reader or the split pane.