Connect with your 1000 true fans

For creative communities and the humans who build them

  • Create memberships and sell access NFTs in minutes

  • Token-gating, memberships, ticketing, and more

  • Open-source, community governed

membership explained animation

Connecting humans through NFT-based memberships

Your members aren't a commodity. Stop allowing platforms to treat them like one.

  • Restore your POWER as a creator

  • Create new REVENUE streams with NFTs

  • Have a DIRECT relationship with your members

How Unlock works

Create your own membership program without code or chaos.

  1. Define your own membership terms

    1. Set your membership parameters without code!

    2. Add original artwork to your membership NFTs

  2. Launch your membership

    1. Craft your content on your platforms of choice

    2. Set up your members-only content

  3. Members can purchase NFT keys

    1. Members get exclusive experiences

    2. NFT-based keys provide access to unique content

Try it yourself

Connect your wallet, follow the steps, and you'll receive free access to our members-only Discord.

Developers, we have you covered.

Unlock is a protocol - not a platform. It's free to use, community-owned and governed, and offers limitless customization.

1 <script>
2 function loadUnlock(node, script) {
3 const js = node.createElement(script);
4 const sc = d.getElementsByTagName(script)[0];
5
6 js.src="https://paywall.unlock-protocol.com/static/unlock.latest.min.js";
7 sc.parentNode.insertBefore(js, sc);
8 }
9
10 loadUnlock(document, "script");
11 </script>
12
13 <script>
14 var unlockProtocolConfig = {
15 // paywallConfig object
16 }
17 </script>
1 import configureUnlock from "@unlock-protocol/unlock-express"
2 const app = express()
3
4 const { membersOnly } = configureUnlock({
5 async yieldPaywallConfig() {
6 return {}
7 }
8 async getUserEthereumAddress(req) {
9 return req.cookies.userAddress
10 },
11 async updateUserEthereumAddress(req, res, address, signature, message) {
12 res.cookie('userAddress', address)
13 },
14 }
15 }, app)
16
17 app.get('/members', membersOnly(), (req, res) => res.send('Secret stuff! <a href="/logout">logout</a>'))

Recipes

We're building a public good together

Our mission is to create a protocol that belongs to the users, creators and builders - not Unlock Inc.

  • Connect with a passionate community
  • Determine the protocol's future
  • Help build the web3 foundation
Unlock Community
Community

Join the Community

Want to learn more? Have questions? Jump into our community!