Belle-Ve Bricks

Your Imagination

Belleve Bricks FullDark Logo

10+ Best LEGO® MOC Sites

In This Article

Create Your

We help you from start to finish to create and deliver your tailor-made custom model.
Custom model
Continue

Are you looking for the best places to find LEGO® MOCs (My Own Creations)? Look no further! Whether you’re an experienced LEGO® builder or just getting started, this blog post will help you find the perfect place to get your parts and pieces. We’ve listed 10 of the Best LEGO® MOC Sites on the internet, so grab your LEGO® bricks and let’s get started!

Key Takeaways

  • Visit popular LEGO® MOC websites such as Belle-Ve Bricks to find attractive custom designs from other LEGO® enthusiasts.
  • If you want to build your own LEGO® MOCs then you can use websites such as Brothers Brick or Flickr to get inspiration.
  • If you are after a custom-designed LEGO® MOC set instead of sourcing your own bricks you can use websites such as BuildaMOC.

List of Best LEGO® MOC Sites

1. Belle-ve Bricks

bvb homepage best LEGO MOC sites

Belle-Ve Bricks is the perfect place for LEGO fans who love to create custom models. The wide selection of LEGO® Custom Models (also known as LEGO® MOCs) makes it easy to find your next build Whether you prefer intricate castle designs or modern movie-inspired models, Belle-Ve Bricks has everything you need at great prices.

On top of this, their customer service is impossible to beat, and with instant delivery on the LEGO® MOC you purchase, you can start building your next LEGO MOC in no time!

If you wanted a one of a kind LEGO® set Belle-Ve Bricks also offers a LEGO® Commission service, reach out to their friendly support team to have a chat about making your dream LEGO® design come to life!

Belle-Ve Bricks Features

  • Thousands of quality LEGO® MOCs
  • Free and premium LEGO® MOCs
  • Quick search feature for LEGO® Alternate Builds
  • How-to video guides
  • User-friendly website
  • Instant access to LEGO® MOCs
  • LEGO® blog
  • Fast customer service response time

2. Rebrickable

You’ll find a range of fan-made LEGO® MOCs including building instructions and even online contests where members of the Rebrickable community can show off their creations! Whether you’re a pro or just getting started in LEGO building, Rebrickable has something for everyone.

Rebrickable Features

  • Thousands of quality LEGO® MOCs
  • Free and premium LEGO® MOCs
  • Quick search feature for LEGO® Alternate Builds
  • User-friendly website
  • Instant access to LEGO® MOCs

3. Bricklink

bricklink homepage best LEGO MOC sites

BrickLink is a global online marketplace dedicated to LEGO® fans, collectors, and builders. With millions of parts available from hundreds of stores worldwide, BrickLink makes it easy to source the parts you need for your latest MOCs (My Own Creations). Bricklink also has a section where designers can upload free LEGO® MOCs.

Bricklink Features

  • Source LEGO® parts easily with their wanted list
  • Free LEGO® MOCs
  • Instant access to LEGO® MOCs

4. MOCs Market

MOC Market is an online marketplace for LEGO MOCs (My Own Creations). On this site, you can buy instructions for LEGO® MOCs created by vendors, some of the vendors also sell the full kit for their designs too. The website isn’t too user-friendly but you can find your way around it when looking at LEGO® MOCs in their shop.

MOCs Market Features

  • Free and premium LEGO® MOCs
  • Instant access to LEGO® MOCs

5. MOCHub

MOCHub is a great website if you are looking for unofficial LEGO® sets, pick any LEGO® MOC from their website and they will send you the full set (parts and instructions) to your door!

MOC Hub Features

  • Easy to buy custom LEGO® MOC sets
  • User-friendly website

6. The Brothers Brick

Brothers Brick is the ultimate LEGO® fan site, offering original news and features, reviews, galleries of custom creations, and exclusive interviews with LEGO® designers. All content is written by a dedicated team of AFOLs (Adult Fans of LEGO®).

The Brothers Brick Features

  • Great to get inspiration if you want to build your own LEGO® MOC
  • Lots of quality designs hand-picked daily

7. Pinterest

Pinterest is the ultimate virtual scrapbook, with visually stunning boards and an easy-to-use platform, Pinterest offers an engaging way to connect with other LEGO® fans who want to share their LEGO® MOCs. Don’t expect to find the same types of designs that you would find on Belle-Ve Bricks but there are certainly fun LEGO® projects on Pinterest that will keep you occupied for hours.

Pinterest Features

  • Easy to find fun LEGO® projects
  • User-friendly website
  • Great to get inspiration if you want to build your own LEGO® MOC
  • Lots of quality designs by various members

8. Flickr

LEGO® fans will love exploring the endless LEGO® models shared on Flickr. If you are after inspiration for your next LEGO® MOC then this is somewhere we would definitely recommend to start off.

Flickr Features

  • Great to get inspiration if you want to build your own LEGO® MOC
  • Lots of quality designs by various members

9. BuildaMOC

With hundreds of LEGO® MOC sets available at BuildaMOC you will certainly be able to find the next LEGO® model on your build list easily. The website is incredibly user-friendly and they ship globally too!

BuildaMOC Features

  • Easy to buy custom LEGO® MOC sets
  • Hundreds of LEGO® MOCs to pick from
  • User-friendly website

10. Bricker Builds

This is a great website to get quality LEGO ® MOC sets from, they do not have a vast selection available but what they do have are amazing. If you are interested in big and detailed LEGO® MOCs then you will want to check this site out.

Bricker Builds Features

  • Unique LEGO® MOCs
  • User-friendly website

More Info

How Do I Find Instructions For My LEGO MOC?

You can find instructions for LEGO MOCs (My Own Creations) in a variety of places.

Belle-Ve Bricks offers an extensive collection where you can find your LEGO MOCs with Building Instructions.

Rebrickable is an excellent source, as it contains instructions for thousands of fan-created designs. BrickLink offers instructions for many official sets as well, although you’ll have to pay for them. Finally, there are some helpful forums and websites dedicated to sharing building techniques and tips – so be sure to explore these if you’re stuck on a particular design!

What Other Resources Are Available For LEGO Builders?

There are plenty of great resources out there that can help even the most novice builder create amazing custom models. LEGO Ideas is an online platform where users can share their own creations and receive feedback from the community.

LEGO fan sites such as Eurobricks, Brickset, and BrickLink also provide a wealth of information on new sets and building techniques. And don’t forget about the trusty ol’ search engine – you can use it to find everything from tutorials and parts lists to custom design galleries!

Belle-Ve Bricks also offers a documentation section where you find a wealth of knowledge.

Conclusion

Whether you’re looking for inspiration to start your own LEGO® MOC or want to venture away from official LEGO® sets to build a design someone else has created these LEGO® MOC sites are the perfect place to start. With these LEGO® websites at your fingertips, your list of LEGO® models to build will be endless, so the question is, what will you build next?

<div class="badge-base LI-profile-badge" data-locale="en_US" data-size="large" data-theme="dark" data-type="HORIZONTAL" data-vanity="ferdi-vol" data-version="v1"><a class="badge-base__link LI-simple-link" href="https://www.linkedin.com/in/%E2%9C%85-ferdi-vol-corporate-gifts/?trk=profile-badge"></a></div>
/* Auto generated, hash = 5dceu9kevqjdyuy2uw1atqrsu */
//TODO: Break this file down so that we can actually unit test it.
(function(window) {
  /**
  * Renders all unrendred LinkedIn Badges on the page
  */
  window.LIRenderAll = function () {
    var CALLBACK_NAME     = 'LIBadgeCallback', //Must match callback on helpers.js
        BADGE_NAMES       = '.LI-profile-badge, .LI-entity-badge',
        // TODO -- tracking param for other badge types
        TRACKING_PARAM    = 'profile-badge',
        responsesReceived = 0, //Keeps track of number of responses recieved for proper cleanup when finished
        expectedResponses = 0, //Keeps track of number of responses to expect
        scripts           = [ ], //Keeps track of scripts added for proper cleanup when finished
        childScripts      = {}, //Keeps track of child scripts to render
        badges            = Array.prototype.slice.call(document.querySelectorAll(BADGE_NAMES));

    var i, len, badge, rendered;
    for (i = 0, len = badges.length;  i < len; i++) {
      badge    = badges[i];
      rendered =  badge.getAttribute('data-rendered');
      if (!rendered) {
        expectedResponses++;
        badge.setAttribute('data-rendered', true);
        renderBadge(badge);
      }
    }

    function isCNDomain() {
      if (typeof window !== "undefined") {
        var hostName = window.location && window.location.hostname ||  '';
        return (/linkedin(-ei)?.cn$/).test(hostName);
      }

      return false;
    }

    function generateUrl(isEI) {
      var domainPrefix = isEI ? 'https://badges.linkedin-ei' : 'https://badges.linkedin';
      if (isCNDomain()) {
        return domainPrefix + ".cn/";
      }

      return domainPrefix + ".com/";
    }

    function getBadgeKeyQueryParams(badge) {
      return Array.prototype.slice.call(badge.attributes).filter(function (attr) {
        return attr.name.lastIndexOf('data-key-', 0) !== -1;
      }).map(function (attr) {
        // Most browsers automatically lowercase the attribute name when its being read
        // We are calling lowercase on it again to ensure consistency for any browsers that are lagging behind.
        return encodeURIComponent(attr.name.replace('data-', '').toLowerCase()) + '=' + encodeURIComponent(attr.value);
      });
    }

    /*
    * Renders a single badge on the page
    * @param badge: div element of badge to render
    */
    function renderBadge(badge) {
      var size       = badge.getAttribute('data-size'),
          locale     = badge.getAttribute('data-locale'),
          type       = badge.getAttribute('data-type'),
          theme      = badge.getAttribute('data-theme'),
          vanity     = badge.getAttribute('data-vanity'),
          version    = badge.getAttribute('data-version'),
          isEI       = badge.hasAttribute('data-ei'),
          entity     = badge.getAttribute('data-entity'),
          isCreatePage = badge.hasAttribute('data-iscreate'),
          uid        = Math.round(1000000 * Math.random()),
          baseUrl = generateUrl(isEI),
          queryParams = [
            'locale=' + encodeURIComponent(locale),
            'badgetype=' + encodeURIComponent(type),
            'badgetheme=' + encodeURIComponent(theme),
            'uid=' + encodeURIComponent(uid),
            'version=' + encodeURIComponent(version)
          ],
          url;

      if (version === 'v2') {
        baseUrl += 'view';
        queryParams.push('badgesize=' + encodeURIComponent(size));
        queryParams.push('entity=' + encodeURIComponent(entity));
        queryParams = queryParams.concat(getBadgeKeyQueryParams(badge));
      } else {
        baseUrl += 'profile';
        queryParams.push('maxsize=' + encodeURIComponent(size));
        queryParams.push('trk=' + encodeURIComponent(TRACKING_PARAM));
        queryParams.push('vanityname=' + encodeURIComponent(vanity));
      }

      if (isCreatePage) {
        queryParams.push('fromCreate=true');
      }

      url = baseUrl + '?' + queryParams.join('&');
      badge.setAttribute('data-uid' , uid);
      jsonp(url); //Calls responseHandler when done
    }

    /**
    * Handles a response from the server. Finds badge matching badgeUid and inserts badgeHtml there
    * @param badgeHtml: String representing contents of the badge
    * @param badgeUid: UID of the badge to target
    **/
    function responseHandler(badgeHtml, badgeUid) {
      responsesReceived ++;

      var i, badge, uid, isCreate;
      var defaultWidth = 330 // max possible width
      var defaultHeight = 300 // max possible height

      for (i = 0, len = badges.length; i < len; i++) {
        badge = badges[i];
        // isCreate needed to prevent reloading artdeco script tag
        isCreate = badge.getAttribute('data-iscreate');
        uid   = parseInt(badge.getAttribute('data-uid'), 10);
        if (uid === badgeUid) {
          var badgeMarkup = `<body>${badgeHtml}</body>`
          var iframe = document.createElement('iframe');
          iframe.onload = function() {
            var iframeBody = iframe.contentWindow.document.body;
            // 5 px buffer to avoid the badge border being cut off.
            iframe.setAttribute('height', (iframeBody.scrollHeight || defaultHeight) + 5);
            iframe.setAttribute('width', (iframeBody.scrollWidth || defaultWidth) + 5);
          };
          iframe.setAttribute('frameBorder', '0');
          iframe.style.display = 'block';
          badge.appendChild(iframe);
          iframe.contentWindow.document.open();
          iframe.contentWindow.document.write(badgeMarkup);
          iframe.contentWindow.document.close();
          replaceScriptTags(badge, isCreate);
        }
      }
      tryClean();
    }

  // These functions are needed because badge markup is added via innerHtml property which does not run script tags
  function replaceScriptTags(node, isCreate) {
    if (shouldReplaceNode(node, isCreate)) {
      node.parentNode.replaceChild(cloneScriptNode(node), node);
      childScripts[node.src] = true;
    } else {
      var i = 0,
          children = node.childNodes;
      while (i < children.length) {
        replaceScriptTags(children[i++], isCreate);
      }
    }
    return node;
  }

  function shouldReplaceNode(node, isCreate) {
    return isScriptNode(node) && !childScripts[node.src] && (!isCreate || (isCreate && !node.getAttribute('data-isartdeco')));
  }

  function isScriptNode(node) {
    return node.tagName === 'SCRIPT';
  }

  function cloneScriptNode(node){
    var script  = document.createElement("script");
    for( var i = node.attributes.length-1; i >= 0; i-- ) {
      script.setAttribute( node.attributes[i].name, node.attributes[i].value );
    }
    return script;
  }

    // Gets all incoming responses
    window[CALLBACK_NAME] = responseHandler;

    /**
    * Tries to clean added tags
    **/
    function tryClean() {
      //Clean up after all requests are done..
      //Accounts for people including script more than once
      var done = (responsesReceived >= expectedResponses && expectedResponses > 0) || responsesReceived >= badges.length;
      if (done) {
        delete window[CALLBACK_NAME];

        // remove all script tags
        scripts.map(function(script){
          document.body.removeChild(script);
        });

      }
    }

    /*
    * Makes Jsonp request, responses handles by CALLBACK_NAME
    * @param url String: url of server to make request to
    */
    function jsonp(url) {
      var script = document.createElement('script');
      script.src = url;
      scripts.push(script);
      document.body.appendChild(script);
    }
  };

  if (document.readyState === 'complete') {
    window.LIRenderAll();
  } else {
    window.addEventListener('load', window.LIRenderAll, false);
  }

})(window);
Popular Posts