the standard · since September 2020
// standard · nft royalties · royaltyInfo · ready

What is ERC-2981?

NFT royalties as a discovery signal, not an enforcement mechanism.

ERC-2981 ·EIP-2981 ·by Zach Burks + James Morgan

updated · 1 min read · by ercs-solved maintainers

ERC-2981 is the NFT royalty standard most marketplaces know how to ask for. It answers one question: if this token sells for this price, who should receive royalties and how much?

on this page
  1. What is ERC-2981?
  2. At a glance
  3. Origin story
  4. The spec
  5. What's broken
  6. Royalties are signaled, not enforced
  7. It does not define royalty metadata
  8. It depends on marketplace behavior
  9. LUKSO alternative
  10. ERC-2981 vs LSP4+LSP8
  11. When to use which
  12. FAQ
  13. Sources
  14. Keep reading
at a glance

The standard, in one card.

Standard
ERC-2981 / EIP-2981
Core function
royaltyInfo(tokenId, salePrice)
how the standard came to be

The origin story.#

NFT royalties were originally marketplace-specific. ERC-2981 standardized the read path so contracts could publish royalty information without every marketplace inventing a custom adapter.

the spec, end to end

What ERC-2981 actually is.#

ERC-2981 EIP-2981 interface solidity
function royaltyInfo(uint256 tokenId, uint256 salePrice) external view returns (address receiver, uint256 royaltyAmount);
ERC-2981 interface, grouped
read: royaltyInfo
inputs: tokenId · salePrice
outputs: receiver · royaltyAmount

royaltyInfo takes a tokenId and salePrice, then returns a receiver and royaltyAmount. The contract can compute that amount however it wants, as long as it returns the amount in the same unit as the sale price.

the integration tax

What's broken about ERC-2981.#

The standard deliberately does not enforce royalties. That keeps transfers simple and composable, but it means royalty payment is a marketplace or sale-contract policy choice.

  1. Royalties are signaled, not enforced.#

    The standard returns a suggested receiver and amount. It does not force marketplaces, private transfers, or escrow contracts to pay that amount.

    ERC-2981 royaltyInfo(...)
    discovery voluntary
    policy marketplace enforces
    off-standard
    workarounds tried
    • marketplace policy
    • transfer validators
    • allowlists
    • custom sale contracts
  2. It does not define royalty metadata.#

    ERC-2981 returns payment data. It does not define creator profiles, license text, splits metadata, or rich attribution fields.

    ERC-2981 receiver + amount
    minimal
    LSP4 typed metadata keys
    richer context
    workarounds tried
    • off-chain metadata
    • custom split contracts
    • marketplace pages
  3. It depends on marketplace behavior.#

    A standard royalty function only helps if buyers and marketplaces route through software that calls it and honors the result.

    NFT sale marketplace decides
    policy layer
    account stack explicit permission / sale flow
    app-specific
    workarounds tried
    • operator filters
    • creator-enforced marketplaces
    • legal terms
the LUKSO alternative

LUKSO designed it differently.#

LUKSO's metadata and profile standards make creator and asset information richer than one royalty function. Royalty payment still needs application policy, but the identity and metadata substrate is less ad hoc.

spec to spec, at a glance

ERC-2981 vs LSP4+LSP8 in one table.#

row ERC-2981 LSP metadata and asset stack
purpose royalty discovery asset and creator metadata substrate
enforces payment no no by itself; app policy required
data shape receiver + amount typed metadata keys
asset fit NFT royalty-aware marketplaces LSP8 assets and Universal Profiles
be honest about scope

When to use which.#

people also ask

FAQ.#

  • Does ERC-2981 enforce NFT royalties? #

    No. It standardizes royalty discovery. Marketplaces and sale contracts still decide whether to pay the returned royalty.

  • What does royaltyInfo return? #

    It returns a receiver address and a royalty amount for a given tokenId and salePrice.

  • Does ERC-2981 only work with ERC-721? #

    No. It can be used by NFT-style contracts generally, and it is detected through ERC-165.

primary sources

Where this page draws from.#

  1. EIP-2981