In SilverBullet every page or document has a name. Names are (currently) unique, meaning no two pages or documents can share the same name.

Rules

Names must also follow certain rules:

  • Names cannot be empty
  • Names cannot start with a ., ^ nor /
  • Names cannot contain the characters |, @ or #
  • Names cannot contain the sequences [[ or ]]
  • Names cannot contain one or two . enclosed by a combination of the start/end of the name or /
  • Names cannot contain //
  • Names cannot end in .md (See Paths > Relation to names section)
  • (Names are case-sensitive and contrary to most filesystem, / is allowed)

Valid Examples

  • “foo”
  • “this/is/a/page/name”
  • “this/…/is/also/a/page”
  • “this/is/a/document.png”

Invalid Examples

  • “foo@bar”
  • “.foo”
  • “foo//bar”
  • “foo/../bar”

Special characters

Certain HTTP reverse proxies may block “suspicious” characters (such as ?, # and ;) by default, including Traefik, see this thread on how to work around this.

Naming conventions

Beyond the hard rules above, there is a widely-used stylistic convention for everyday content pages:

  • Use Title Case with spaces: name a page as you’d write it in prose: Customer Persona, Release Process — not customer-persona, release_process, or CustomerPersona. The page name doubles as its title and as inline link text, so a readable name reads well in context: see [[Release Process]].
  • Keep the namespace flat by default: place most pages at the top level and reach for folders only once a clear grouping earns it. See Best Practices > Flat name space for the rationale.

These are conventions, not enforced rules — your space is yours to organise however suits you.