diff --git a/interface/src/ui/overlays/ModelOverlay.cpp b/interface/src/ui/overlays/ModelOverlay.cpp
index ccaa1d4fbc..07fc2a2b9d 100644
--- a/interface/src/ui/overlays/ModelOverlay.cpp
+++ b/interface/src/ui/overlays/ModelOverlay.cpp
@@ -22,6 +22,7 @@ ModelOverlay::ModelOverlay()
       _modelTextures(QVariantMap())
 {
     _model->init();
+    _model->setLoadingPriority(_loadPriority);
     _isLoaded = false;
 }
 
@@ -30,9 +31,11 @@ ModelOverlay::ModelOverlay(const ModelOverlay* modelOverlay) :
     _model(std::make_shared<Model>(std::make_shared<Rig>(), nullptr, this)),
     _modelTextures(QVariantMap()),
     _url(modelOverlay->_url),
-    _updateModel(false)
+    _updateModel(false),
+    _loadPriority(modelOverlay->getLoadPriority())
 {
     _model->init();
+    _model->setLoadingPriority(_loadPriority);
     if (_url.isValid()) {
         _updateModel = true;
         _isLoaded = false;
@@ -113,6 +116,12 @@ void ModelOverlay::setProperties(const QVariantMap& properties) {
         _updateModel = true;
     }
 
+    auto loadPriorityProperty = properties["loadPriority"];
+    if (loadPriorityProperty.isValid()) {
+        _loadPriority = loadPriorityProperty.toFloat();
+        _model->setLoadingPriority(_loadPriority);
+    }
+
     auto urlValue = properties["url"];
     if (urlValue.isValid() && urlValue.canConvert<QString>()) {
         _url = urlValue.toString();
diff --git a/interface/src/ui/overlays/ModelOverlay.h b/interface/src/ui/overlays/ModelOverlay.h
index a3ddeed480..e389181879 100644
--- a/interface/src/ui/overlays/ModelOverlay.h
+++ b/interface/src/ui/overlays/ModelOverlay.h
@@ -41,6 +41,8 @@ public:
 
     void locationChanged(bool tellPhysics) override;
 
+    float getLoadPriority() const { return _loadPriority; }
+
 private:
 
     ModelPointer _model;
@@ -49,6 +51,7 @@ private:
     QUrl _url;
     bool _updateModel = { false };
     bool _scaleToFit = { false };
+    float _loadPriority { 0.0f };
 };
 
 #endif // hifi_ModelOverlay_h
diff --git a/scripts/system/controllers/handControllerGrab.js b/scripts/system/controllers/handControllerGrab.js
index 8a1ee8dff4..992c20ef72 100644
--- a/scripts/system/controllers/handControllerGrab.js
+++ b/scripts/system/controllers/handControllerGrab.js
@@ -1336,6 +1336,7 @@ function MyController(hand) {
         var stylusProperties = {
             name: "stylus",
             url: Script.resourcesPath() + "meshes/tablet-stylus-fat.fbx",
+            loadPriority: 10.0,
             localPosition: Vec3.sum({ x: 0.0,
                                       y: WEB_TOUCH_Y_OFFSET,
                                       z: 0.0 },
diff --git a/scripts/system/libraries/WebTablet.js b/scripts/system/libraries/WebTablet.js
index e71aefc51e..6aa3c4de8a 100644
--- a/scripts/system/libraries/WebTablet.js
+++ b/scripts/system/libraries/WebTablet.js
@@ -120,6 +120,7 @@ WebTablet = function (url, width, dpi, hand, clientOnly, location) {
         modelURL: modelURL,
         url: modelURL, // for overlay
         grabbable: true, // for overlay
+        loadPriority: 10.0, // for overlay
         userData: JSON.stringify({
             "grabbableKey": {"grabbable": true}
         }),
diff --git a/scripts/system/tablet-ui/tabletUI.js b/scripts/system/tablet-ui/tabletUI.js
index cacd9663ab..8a7d0a2ec4 100644
--- a/scripts/system/tablet-ui/tabletUI.js
+++ b/scripts/system/tablet-ui/tabletUI.js
@@ -219,6 +219,7 @@
                     var tmpStylusID = Overlays.addOverlay("model", {
                         name: "stylus",
                         url: Script.resourcesPath() + "meshes/tablet-stylus-fat.fbx",
+                        loadPriority: 10.0,
                         position: Vec3.sum(MyAvatar.position, Vec3.multiplyQbyV(MyAvatar.orientation, {x: 0, y: 0.1, z: -2})),
                         dimensions: { x: 0.01, y: 0.01, z: 0.2 },
                         solid: true,