NIPs by PolleramaCommunity NIPs, surfaced by trustConnect
npub1scvyzz02aym...

NIP-CM: Color Moments

Published Jun 12, 2026
kind 3367

NIP-XX: Color Moments

draft optional

This NIP defines a way to share color palettes captured from beautiful moments, enabling pre-verbal visual communication through color and emotion.

Abstract

Color Moments are events that capture 3-6 colors witnessed in a beautiful moment, optionally accompanied by a single emoji representing the feeling and an optional name. This creates a form of visual communication that transcends language barriers.

Event Kind

This NIP defines kind 3367 for Color Moment events.

Event Format

Color Moment Event (kind 3367)

{
  "kind": 3367,
  "content": "<optional single emoji>",
  "tags": [
    ["c", "<hex color 1>"],
    ["c", "<hex color 2>"],
    ["c", "<hex color 3>"],
    ["c", "<hex color 4>"],
    ["c", "<hex color 5>"],
    ["c", "<hex color 6>"],
    ["layout", "<layout mode>"],
    ["name", "<optional name>"],
    ["alt", "Color moment: <hex color 1>, <hex color 2>, ..."]
  ]
}

Fields

  • content: Either empty string "" or a single emoji representing the feeling of the moment (e.g., ๐ŸŒ…, โœจ, ๐Ÿ’™)
  • tags:
  • c tags: Required. 3-6 color tags, each containing a hex color value in the format #RRGGBB (case-insensitive)
  • layout tag: Optional. Display layout preference: horizontal, vertical, grid, or star
  • name tag: Optional. A short name or title for the color moment (recommended max 50 characters)
  • alt tag: Required. Human-readable description per NIP-31 for clients that don't understand this kind

Color Tag (c)

The c tag represents a color in the palette:

["c", "#FF6B9D"]
  • Value MUST be a valid 6-digit hex color prefixed with #
  • Colors SHOULD be ordered as the user selected them (typically by visual prominence or emotional importance)
  • Recommended 3-6 colors per event (these are guidelines; clients may choose different limits)

Layout Tag (layout)

The layout tag specifies the preferred visual arrangement of colors:

["layout", "horizontal"]

Valid layout values:

  • horizontal: Stacked color bands (default if not specified)
  • vertical: Side-by-side color columns
  • grid: Grid layout (2x2 for 4 colors, 3x2 for 6 colors)
  • star: Radial pie-slice arrangement emanating from center (not recommended for 4 colors as it appears identical to grid)
  • checkerboard: Colors arranged in a grid pattern (rows and columns based on color count)
  • diagonalStripes: Diagonal stripes from top-left to bottom-right

Clients that don't support a specified layout SHOULD fall back to horizontal.

Name Tag (name)

The name tag provides an optional short name or title:

["name", "Sunset at the beach"]
  • Value SHOULD be a short descriptive phrase (recommended max 50 characters)
  • Complements the visual color information with textual context
  • Optional; moments can be purely visual without names

Example Events

Sunset moment with emoji, name, and layout:

{
  "kind": 3367,
  "content": "๐ŸŒ…",
  "tags": [
    ["c", "#FF6B9D"],
    ["c", "#FFD700"],
    ["c", "#F4A460"],
    ["c", "#87CEEB"],
    ["layout", "horizontal"],
    ["name", "Golden hour at the pier"],
    ["alt", "Color moment: #FF6B9D, #FFD700, #F4A460, #87CEEB"]
  ]
}

Six-color grid layout:

{
  "kind": 3367,
  "content": "๐ŸŒˆ",
  "tags": [
    ["c", "#FF0000"],
    ["c", "#FF7F00"],
    ["c", "#FFFF00"],
    ["c", "#00FF00"],
    ["c", "#0000FF"],
    ["c", "#8B00FF"],
    ["layout", "grid"],
    ["alt", "Color moment: #FF0000, #FF7F00, #FFFF00, #00FF00, #0000FF, #8B00FF"]
  ]
}

Minimal ocean colors (no emoji, no layout):

{
  "kind": 3367,
  "content": "",
  "tags": [
    ["c", "#0077BE"],
    ["c", "#00A5CF"],
    ["c", "#48D1CC"],
    ["alt", "Color moment: #0077BE, #00A5CF, #48D1CC"]
  ]
}

Star layout with five colors:

{
  "kind": 3367,
  "content": "โญ",
  "tags": [
    ["c", "#FFD700"],
    ["c", "#FF69B4"],
    ["c", "#00CED1"],
    ["c", "#9370DB"],
    ["c", "#98FB98"],
    ["layout", "star"],
    ["name", "Kaleidoscope"],
    ["alt", "Color moment: #FFD700, #FF69B4, #00CED1, #9370DB, #98FB98"]
  ]
}

Interactions

Reactions

Standard kind 7 reactions (NIP-25) are used to react to color moments. Clients MAY limit reactions to a curated set of nature/emotion emojis:

๐ŸŒ… ๐ŸŒ„ โ˜€๏ธ ๐ŸŒ™ โญ โœจ ๐Ÿ’ซ ๐ŸŒˆ ๐Ÿ”ฅ ๐Ÿ’ง ๐ŸŒŠ ๐Ÿ’š ๐Ÿ’™ ๐Ÿ’› ๐Ÿงก โค๏ธ ๐Ÿ’œ ๐ŸŒธ ๐ŸŒบ ๐Ÿ‚ ๐ŸŒฟ ๐Ÿฆ‹ ๐Ÿš ๐Ÿ‘๏ธ

Bookmarking

Clients MAY support bookmarking color moments using kind 30003 (NIP-51 bookmark lists). A suggested implementation uses a d tag identifier like cherished-hues or color-moments:

{
  "kind": 30003,
  "content": "",
  "tags": [
    ["d", "cherished-hues"],
    ["e", "<color moment event id 1>"],
    ["e", "<color moment event id 2>"],
    ["e", "<color moment event id 3>"]
  ]
}

Zaps

Color moments support Lightning Zaps (NIP-57) as a way to appreciate and support creators.

Display Recommendations

Clients SHOULD display color moments as:

  1. Layout respect: Honor the layout tag if present; fall back to horizontal if unsupported or unspecified
  2. Color arrangement:
  3. horizontal: Stacked bands of equal height
  4. vertical: Side-by-side columns of equal width
  5. grid: 2x2 grid for 4 colors, 3x2 grid for 6 colors, or best-fit grid for other counts
  6. star: Radial pie slices emanating from center (equal angles per color)
  7. checkerboard: Colors in a rectangular grid (rows ร— columns based on color count)
  8. diagonalStripes: Diagonal bands slanting from top-left to bottom-right
  9. Emoji overlay: If content contains an emoji, display it centered over the colors
  10. Name display: If name tag present, display it alongside author information
  11. Minimal chrome: Let the colors be the focus, minimize UI elements
  12. Interactive features: Consider supporting layout switching, color copying, and sharing functionality

Validation

A valid color moment MUST:

  1. Be kind 3367
  2. Have at least 3 c tags (recommended maximum of 6, though clients may accept more)
  3. Have all c tag values match the regex /^#[0-9A-Fa-f]{6}$/
  4. Have an alt tag for NIP-31 compatibility

A valid color moment MAY:

  1. Have a layout tag with value horizontal, vertical, grid, star, checkerboard, or diagonalStripes
  2. Have a name tag with a short descriptive text
  3. Have content containing a single emoji (or be empty)

Note: The 3-6 color range is a guideline for optimal visual display. Clients should be tolerant of events outside this range while potentially displaying warnings or adjusting layouts accordingly.

Rationale

Why a custom kind?

Using kind 1 (text notes) with custom tags would cause color moments to appear as empty or emoji-only posts in standard clients, creating a confusing user experience. A dedicated kind allows:

  • Clients to handle color moments appropriately or ignore them gracefully
  • Clear NIP-31 alt tag descriptions for unsupported clients
  • Future extensibility without polluting the text note ecosystem

Why the c tag?

The c tag is short, descriptive, and not currently used for colors in the Nostr ecosystem. It allows efficient relay-level filtering with #c queries if needed.

Why recommend 3-6 colors?

  • Minimum 3: Ensures enough visual information to convey a moment
  • Maximum 6: Keeps palettes focused and visually digestible
  • Flexibility: These are guidelines; clients may support different ranges based on their design philosophy

The 3-6 range balances expressiveness with simplicity, but implementations may be more permissive.

Why single emoji in content?

The content field is intentionally minimal (empty or single emoji) to maintain the pre-verbal, visual nature of color moments. Extended text would defeat the purpose of pure visual/emotional communication.

Why add layout and name tags?

  • Layout tag: Allows creators to express their artistic intent for how colors should be arranged, while maintaining client flexibility
  • Name tag: Provides optional textual context without compromising the pre-verbal nature (complements rather than replaces the visual)
  • Progressive enhancement: Both tags are optional, maintaining backwards compatibility with simpler implementations

Client Implementation Notes

Clients implementing this NIP should consider:

  1. Camera integration: Allow users to capture colors directly from their device camera
  2. Manual color picker: Provide a color wheel or palette for manual selection
  3. Layout preview: Show real-time preview of different layout options
  4. Copy functionality: Enable copying color values (hex codes) for creative reuse
  5. Remix feature: Allow users to create new moments based on existing palettes
  6. Accessibility: Provide color names alongside hex codes for visually impaired users

References