Rebrickable plans

Get more from your bricks.

Protect your collection with Pro. Grow your MOC business with Designer.

Choose your plan

Prices in USD. Cancel future renewals anytime.

For MOC creators & sellers

Designer

Understand your audience and give your designs more visibility.

US $9.90 / month

Or US $99 / year
Save US $19.80 with yearly billing

Get started with Designer
  • Everything in Pro, including backups & undo
  • 12 months of analytics, search stats & data exports
  • Featured MOC & social media promotions
  • Unlimited active Premium MOCs
  • Discounted Premium MOC commission rate

Monthly or yearly billing. Subscriptions renew automatically until cancelled.

New here? Create a free account first, then choose your plan and billing period.

Free — US $0, no subscription.

Find builds, organise your bricks, and buy or sell MOC instructions. Includes 20 Set Lists & 20 Part Lists.

Create a free account

Plans unlock Rebrickable features. Premium MOC instructions are purchased separately.

See what your upgrade adds

Included with Pro & Designer

An accidental edit? Undo it.

Daily backups keep a copy of your Set, Part and Custom Lists. Change history helps you find an accidental edit and undo it. Changes made before upgrading to Pro cannot be undone.

Collection change history showing changes to lists and controls to undo an edit
Keep track of what changed. Review your collection history and reverse individual changes.

More collection tools with Pro

  • Higher list limits give your collection room to grow
  • Add notes to Parts and Sets to better organise your collection
  • Use custom colour matching and build colour switching
  • Save favourite stores, blacklist others and personalise the site's appearance
All Pro features

Extra tools with Designer

Discover what gets your MOCs noticed.

Explore 12 months of analytics, follower activity and search trends. See which promotions bring views and sales, and export your data.

Designer analytics dashboard with MOC impressions, clicks and performance charts
A clearer view of your MOCs. Follow impressions, views and other activity across your designs.

More business tools with Designer

  • Featured placements and social media promotions
  • Publish unlimited Premium MOCs
  • Reduce your commission rate by 2 percentage points
  • Customise PDF previews and purchase stamping
  • Priority MOC approvals
All Designer features

Compare plans & limits

These limits apply to the current plan versions. Legacy plans may have different limits.

Collection & featuresFreeProDesigner
Set Lists20100200
Part Lists20100200
Custom Lists20200300
Unique Sets per list1005,0005,000
Unique Parts per list1,00015,00015,000
Multi-Buy Parts1,0005,0005,000
Backup copies077
Active Premium MOCs100100Unlimited
Change history & undoNot includedIncludedIncluded
Part/Set notes & colour toolsNot includedIncludedIncluded
MOC analytics history1 month3 months12 months
Search stats & featured MOC promotionsNot includedNot includedIncluded
MOC commission discount——2 percentage points
Monthly subscriber raffle entryNot includedIncludedIncluded

Before you choose

A few useful answers.

Can I cancel at any time?

Yes. Cancel future renewals from your Plan page. You keep your paid features until your current billing period ends.

Can I try a plan for one month?

Choose monthly billing, then cancel future renewals whenever you want. Plans renew automatically until cancelled.

Can I change plans later?

Yes. Stripe subscribers can change plan and billing cycle, with any price difference prorated. PayPal subscribers need to cancel their existing subscription and sign up again to change plans.

Are Premium MOC instructions included?

No. Pro and Designer unlock site features. Premium MOC instructions are sold separately by their designers.

Do I need a paid plan to sell MOCs?

No. You can sell Premium MOC instructions with a Free account. Designer adds more analytics, promotion tools and a commission discount.

What happens when my paid plan ends?

Your account returns to Free. Existing Parts, Sets and Lists above the Free limits remain, but you may be unable to add more. Paid features become unavailable, and Part/Set notes may be lost if you make changes before renewing.

Support the site you build with

More tools for you. More support for Rebrickable.

Your upgrade helps keep Rebrickable running and funds improvements to the tools you use.

Create your account
DJDT

Time

Resource usage

Resource Value
User CPU time 39.499 msec
System CPU time 1.493 msec
Total CPU time 40.992 msec
Elapsed time 42.134 msec
Context switches 20 voluntary, 4 involuntary

Browser timing

Timing attribute Timeline Milliseconds since navigation start (+length)

SQL queries from 1 connection

  • default 1.48 ms (13 queries including 12 similar )
Query Timeline Time (ms) Action
SELECT MAX("plans_plan"."version") AS "version__max"
  FROM
"plans_plan"
 WHERE
"plans_plan"."type" = 'F'
SELECT ••• FROM "plans_plan" WHERE "plans_plan"."type" = 'F'
4 similar queries.
0.28

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./plans/views.py in plans_index(18)
  plan = Plan.get_current_plan(plan_type[0])

/home/nathan/rb/site/./plans/models.py in get_current_plan(87)
  max_version = Plan.objects.filter(type=plan_type).aggregate(Max('version'))['version__max']

SELECT "plans_plan"."id",
       "plans_plan"."type",
       "plans_plan"."version",
       "plans_plan"."stripe_id",
       "plans_plan"."paypal_id",
       "plans_plan"."cost_single",
       "plans_plan"."cost_monthly",
       "plans_plan"."cost_yearly"
  FROM
"plans_plan"
 WHERE
("plans_plan"."type" = 'F' AND "plans_plan"."version" = 4)
 LIMIT
21
SELECT ••• FROM "plans_plan" WHERE ("plans_plan"."type" = 'F' AND "plans_plan"."version" = 4) LIMIT 21
4 similar queries.
0.10

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./plans/views.py in plans_index(18)
  plan = Plan.get_current_plan(plan_type[0])

/home/nathan/rb/site/./plans/models.py in get_current_plan(89)
  return Plan.objects.get(type=plan_type, version=max_version)

SELECT "plans_planlimits"."id",
       "plans_planlimits"."plan_id",
       "plans_planlimits"."name",
       "plans_planlimits"."value"
  FROM
"plans_planlimits"
 WHERE
"plans_planlimits"."plan_id" = 7
SELECT ••• FROM "plans_planlimits" WHERE "plans_planlimits"."plan_id" = 7
4 similar queries.
0.12

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./plans/views.py in plans_index(20)
  all_plan_limits[plan_type[0]] = {x.name: x.value for x in limits}

SELECT MAX("plans_plan"."version") AS "version__max"
  FROM
"plans_plan"
 WHERE
"plans_plan"."type" = 'P'
SELECT ••• FROM "plans_plan" WHERE "plans_plan"."type" = 'P'
4 similar queries.
0.10

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./plans/views.py in plans_index(18)
  plan = Plan.get_current_plan(plan_type[0])

/home/nathan/rb/site/./plans/models.py in get_current_plan(87)
  max_version = Plan.objects.filter(type=plan_type).aggregate(Max('version'))['version__max']

SELECT "plans_plan"."id",
       "plans_plan"."type",
       "plans_plan"."version",
       "plans_plan"."stripe_id",
       "plans_plan"."paypal_id",
       "plans_plan"."cost_single",
       "plans_plan"."cost_monthly",
       "plans_plan"."cost_yearly"
  FROM
"plans_plan"
 WHERE
("plans_plan"."type" = 'P' AND "plans_plan"."version" = 2)
 LIMIT
21
SELECT ••• FROM "plans_plan" WHERE ("plans_plan"."type" = 'P' AND "plans_plan"."version" = 2) LIMIT 21
4 similar queries.
0.08

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./plans/views.py in plans_index(18)
  plan = Plan.get_current_plan(plan_type[0])

/home/nathan/rb/site/./plans/models.py in get_current_plan(89)
  return Plan.objects.get(type=plan_type, version=max_version)

SELECT "plans_planlimits"."id",
       "plans_planlimits"."plan_id",
       "plans_planlimits"."name",
       "plans_planlimits"."value"
  FROM
"plans_planlimits"
 WHERE
"plans_planlimits"."plan_id" = 8
SELECT ••• FROM "plans_planlimits" WHERE "plans_planlimits"."plan_id" = 8
4 similar queries.
0.09

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./plans/views.py in plans_index(20)
  all_plan_limits[plan_type[0]] = {x.name: x.value for x in limits}

SELECT MAX("plans_plan"."version") AS "version__max"
  FROM
"plans_plan"
 WHERE
"plans_plan"."type" = 'D'
SELECT ••• FROM "plans_plan" WHERE "plans_plan"."type" = 'D'
4 similar queries.
0.10

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./plans/views.py in plans_index(18)
  plan = Plan.get_current_plan(plan_type[0])

/home/nathan/rb/site/./plans/models.py in get_current_plan(87)
  max_version = Plan.objects.filter(type=plan_type).aggregate(Max('version'))['version__max']

SELECT "plans_plan"."id",
       "plans_plan"."type",
       "plans_plan"."version",
       "plans_plan"."stripe_id",
       "plans_plan"."paypal_id",
       "plans_plan"."cost_single",
       "plans_plan"."cost_monthly",
       "plans_plan"."cost_yearly"
  FROM
"plans_plan"
 WHERE
("plans_plan"."type" = 'D' AND "plans_plan"."version" = 1)
 LIMIT
21
SELECT ••• FROM "plans_plan" WHERE ("plans_plan"."type" = 'D' AND "plans_plan"."version" = 1) LIMIT 21
4 similar queries.
0.07

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./plans/views.py in plans_index(18)
  plan = Plan.get_current_plan(plan_type[0])

/home/nathan/rb/site/./plans/models.py in get_current_plan(89)
  return Plan.objects.get(type=plan_type, version=max_version)

SELECT "plans_planlimits"."id",
       "plans_planlimits"."plan_id",
       "plans_planlimits"."name",
       "plans_planlimits"."value"
  FROM
"plans_planlimits"
 WHERE
"plans_planlimits"."plan_id" = 4
SELECT ••• FROM "plans_planlimits" WHERE "plans_planlimits"."plan_id" = 4
4 similar queries.
0.07

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./plans/views.py in plans_index(20)
  all_plan_limits[plan_type[0]] = {x.name: x.value for x in limits}

SELECT MAX("plans_plan"."version") AS "version__max"
  FROM
"plans_plan"
 WHERE
"plans_plan"."type" = 'A'
SELECT ••• FROM "plans_plan" WHERE "plans_plan"."type" = 'A'
4 similar queries.
0.09

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./plans/views.py in plans_index(18)
  plan = Plan.get_current_plan(plan_type[0])

/home/nathan/rb/site/./plans/models.py in get_current_plan(87)
  max_version = Plan.objects.filter(type=plan_type).aggregate(Max('version'))['version__max']

SELECT "plans_plan"."id",
       "plans_plan"."type",
       "plans_plan"."version",
       "plans_plan"."stripe_id",
       "plans_plan"."paypal_id",
       "plans_plan"."cost_single",
       "plans_plan"."cost_monthly",
       "plans_plan"."cost_yearly"
  FROM
"plans_plan"
 WHERE
("plans_plan"."type" = 'A' AND "plans_plan"."version" = 1)
 LIMIT
21
SELECT ••• FROM "plans_plan" WHERE ("plans_plan"."type" = 'A' AND "plans_plan"."version" = 1) LIMIT 21
4 similar queries.
0.07

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./plans/views.py in plans_index(18)
  plan = Plan.get_current_plan(plan_type[0])

/home/nathan/rb/site/./plans/models.py in get_current_plan(89)
  return Plan.objects.get(type=plan_type, version=max_version)

SELECT "plans_planlimits"."id",
       "plans_planlimits"."plan_id",
       "plans_planlimits"."name",
       "plans_planlimits"."value"
  FROM
"plans_planlimits"
 WHERE
"plans_planlimits"."plan_id" = 3
SELECT ••• FROM "plans_planlimits" WHERE "plans_planlimits"."plan_id" = 3
4 similar queries.
0.06

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./plans/views.py in plans_index(20)
  all_plan_limits[plan_type[0]] = {x.name: x.value for x in limits}

SELECT "countries_plus_country"."iso",
       "countries_plus_country"."iso3",
       "countries_plus_country"."iso_numeric",
       "countries_plus_country"."fips",
       "countries_plus_country"."name",
       "countries_plus_country"."capital",
       "countries_plus_country"."area",
       "countries_plus_country"."population",
       "countries_plus_country"."continent",
       "countries_plus_country"."tld",
       "countries_plus_country"."currency_code",
       "countries_plus_country"."currency_symbol",
       "countries_plus_country"."currency_name",
       "countries_plus_country"."phone",
       "countries_plus_country"."postal_code_format",
       "countries_plus_country"."postal_code_regex",
       "countries_plus_country"."languages",
       "countries_plus_country"."geonameid",
       "countries_plus_country"."neighbours",
       "countries_plus_country"."equivalent_fips_code"
  FROM
"countries_plus_country"
 WHERE
"countries_plus_country"."iso" = 'US'
 LIMIT
21
SELECT ••• FROM "countries_plus_country" WHERE "countries_plus_country"."iso" = 'US' LIMIT 21
0.25

Connection: default

Transaction status: Idle

/home/nathan/rb/site/./plans/views.py in plans_index(26)
  return render(request, 'plans/plans_index.html', {

/home/nathan/rb/site/./rb/templatetags/rb_geo.py in geo_currency(20)
  geo_data = user.geo.get_user_currency()

/home/nathan/rb/site/./geo/geo.py in get_user_currency(253)
  country = Country.objects.get(iso=country_code)

74 </a>
75 </li>
76 <li>
77 {% geo_currency request.user %}
78 </li>
79 {% comment %}
80 <li class="hidden-xs hidden-sm">
81 <a href={% if request.user.is_authenticated %}"{% url 'user_profile_settings' request.user.get_username %}#personalisation"{% else %}"#" onclick="return false;"{% endif %} title="All date/times are being converted to this timezone">{% get_user_timezone request.user %}</a>

/home/nathan/rb/site/rb/templates/rb/includes/topbar.html

Log messages

No messages logged.