diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index e989733fc646d1d5bccd083860d9566f6d54d717..2fe01ab22f9b775f30c67fbc0bba5da482e5fb68 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -2193,6 +2193,17 @@
     <key>Value</key>
     <integer>0</integer>
   </map>
+  <key>AnimatedObjectsIgnoreLimits</key>
+  <map>
+    <key>Comment</key>
+    <string>Ignore server-enforced limits on animated objects. This is only useful for server testing.</string>
+    <key>Persist</key>
+    <integer>1</integer>
+    <key>Type</key>
+    <string>Boolean</string>
+    <key>Value</key>
+    <integer>0</integer>
+  </map>
   <key>DebugAvatarAppearanceMessage</key>
   <map>
     <key>Comment</key>
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 404a77157111731ae93a830f3d2d84ae91feb776..42f6b081e506a488309c2a0ee558d45c924830ae 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -3607,13 +3607,21 @@ F32 LLViewerObject::recursiveGetEstTrianglesMax() const
 S32 LLViewerObject::getAnimatedObjectMaxTris() const
 {
     S32 max_tris = 0;
-    LLSD features;
-    if (gAgent.getRegion())
+    // AXON remove after server testing done
+    if (gSavedSettings.getBOOL("AnimatedObjectsIgnoreLimits"))
     {
-        gAgent.getRegion()->getSimulatorFeatures(features);
-        if (features.has("AnimatedObjects"))
+        max_tris = S32_MAX;
+    }
+    else
+    {
+        if (gAgent.getRegion())
         {
-            max_tris = features["AnimatedObjects"]["AnimatedObjectMaxTris"].asInteger();
+            LLSD features;
+            gAgent.getRegion()->getSimulatorFeatures(features);
+            if (features.has("AnimatedObjects"))
+            {
+                max_tris = features["AnimatedObjects"]["AnimatedObjectMaxTris"].asInteger();
+            }
         }
     }
     return max_tris;
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 1c4a6e4eb74a578dd8828c1ef0da6c319a049f3f..cdbe87de750b542b8e4836e2538efe080546281f 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6675,13 +6675,21 @@ U32 LLVOAvatar::getNumAnimatedObjectAttachments() const
 S32 LLVOAvatar::getMaxAnimatedObjectAttachments() const
 {
     S32 max_attach = 0;
-    LLSD features;
-    if (gAgent.getRegion())
+    // AXON remove after server testing done
+    if (gSavedSettings.getBOOL("AnimatedObjectsIgnoreLimits"))
     {
-        gAgent.getRegion()->getSimulatorFeatures(features);
-        if (features.has("AnimatedObjects"))
+        max_attach = MAX_AGENT_ATTACHMENTS;
+    }
+    else
+    {
+        if (gAgent.getRegion())
         {
-            max_attach = features["AnimatedObjects"]["MaxAgentAnimatedObjectAttachments"].asInteger();
+            LLSD features;
+            gAgent.getRegion()->getSimulatorFeatures(features);
+            if (features.has("AnimatedObjects"))
+            {
+                max_attach = features["AnimatedObjects"]["MaxAgentAnimatedObjectAttachments"].asInteger();
+            }
         }
     }
     return max_attach;