w3c / w3c/activitystreams

Inconsistencies in the `icon` and `image` properties

Open
#660 5 comments 2 reactions 1 assignee View on GitHub

@evanp is already working on this.

Since Jan 9, 2026.

Needs erratum Next version
Dominant language
HTML
Stars
313
Forks
70
PR merge metrics
No merged PRs in 30d

Description

This same issue affects other properties as well. For example, icon and image have similar inconsistencies:

  • ActivityStreams Vocabulary: Both have range Image | Link
  • JSON-LD Context: Both are defined with @type: "@id"
  • Real-world usage: Often used with bare URL strings (e.g., "icon": "https://example.com/avatar.png")

The W3C primer acknowledges this:

assume that a bare string is the href of a Link object, not an id

But JSON-LD processors automatically treat @type: "@id" strings as IRI references.

The primer also notes that this issue is already recognized:

Note that, for linked-data-aware consumers, the @type of the url property is not strictly aligned with the text of the specification. Namely, it requires an @id value, which may not match with the xsd:anyUri option mentioned in the text.

This creates implementation challenges for ActivityPub libraries that rely on proper JSON-LD processors (like Fedify), which automatically attempt to dereference these URLs as ActivityStreams objects rather than treating them as Link hrefs.

See the discussion at https://github.com/fedify-dev/fedify/issues/420 for a concrete example where this causes parsing errors.

The affected properties likely include all those with:

  • Range of Object | Link (or similar combinations)
  • Current JSON-LD context definition of @type: "@id"
  • Common real-world usage as bare URL strings

Would it make sense to address these properties together with href?

Originally posted by @dahlia in #595

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.