# llRezObject

*LSL function*

```lsl
void llRezObject(string item, vector pos, vector vel, rotation rot, integer start_param);
```

- `string item`: Name of the object in the prim's inventory to rez.
- `vector pos`: Position vector in region coordinates where the center of the object will be placed.
- `vector vel`: Initial velocity vector (maximum magnitude ~200m/s).
- `rotation rot`: Initial rotation of the rezzed object.
- `integer start_param`: Start parameter passed to the rezzed object's on_rez event (accessible via llGetStartParameter).

- Delay: 0.1 s
- Energy: 200

Instantiates the named inventory object with the bounding box centered at pos with velocity vel and rotation rot, passing param as the on_rez start parameter. The vel parameter is ignored if the rezzed object is non-physical.

Instantiate `inventory` object at **pos** with velocity **vel** and rotation **rot** with start parameter `param`

The root of `inventory` is not at **pos** but the [center](/functions/llGetGeometricCenter/) of `inventory` is.

To have the root prim at **pos** use [llRezAtRoot](/functions/llRezAtRoot/) instead.

```lsl title="How to use" frame="terminal"
llRezObject("", ZERO_VECTOR, ZERO_VECTOR, ZERO_ROTATION, 0);
```

## Caveats

- Silently fails to rez `inventory` (to have it's geometric center at **pos**) if **pos** is too far from the geometric center of the object trying to rez `inventory`.
- If your script is mysteriously failing to rez things, make sure you haven't (say) written "`<0.0,0.0,1.0>`" for the **pos** parameter rather than (say) `llGetPos() + <0.0,0.0,1.0>`".
- When scripting attachments meant to rez objects, remember that when used in the root of an ([attached](/events/attach/)) [attachment](https://wiki.secondlife.com/wiki/Attachment) `llGetPos` doesn't return the position of the attachment but instead returns the position of the avatar's bounding box geometric center. Read [llGetPos](/functions/llGetPos/) and [llParticleSystem Caveats](/functions/llParticleSystem/#caveats) for more information.
- If the object is unattached and the owner of the object does not have copy permission on `inventory`, the object will no longer be present in inventory after it is rezzed (so another attempt to rez (the same object) will fail); if the owner does have copy permission, then a copy is rezzed, and the original `inventory` remains in inventory.
- If the object is attached and the owner of the object does not have copy permission on `inventory`, an error is shouted on [DEBUG_CHANNEL](/constants/DEBUG_CHANNEL/): "Cannot rez no copy objects from an attached object."
- Silently fails if you don't have offline building rights on the land. To have the right, your objects needs to *either*:
- Be on land you own yourself.
- Be on land where anyone is allowed to build, e.g. a sandbox.
- Be deeded to the group that owns the land.
- Be set to the same group that owns the land and the land have the parcel flag 'allow group to build' set.
- The group role "Always allow 'Create Objects'" will only work to override this when you are online, in the region, or have a child agent in the region. See [SVC-3145](#svc-3145) in the Issues subsection of Deep Notes for more information.
- See [object_rez](/events/object_rez/) for examples on how to establish communications between the rezzing object and the new prim.

## Examples

<details open>
<summary>Example 1</summary>

```lsl
default
{
     touch_start(integer param)
     {
          llRezObject("Object", llGetPos() + <0.0,0.0,1.0>, <0.0,0.0,0.0>, <0.0,0.0,0.0,1.0>, 0);
     }
}
```

</details>

<details>
<summary>Example 2</summary>

```lsl collapse={1-16}
// Rez an object on touch, with relative position, rotation, and velocity all described in the rezzing prim's coordinate system.
string object = "Object"; // Name of object in inventory
vector relativePosOffset = <2.0, 0.0, 1.0>; // "Forward" and a little "above" this prim
vector relativeVel = <1.0, 0.0, 0.0>; // Traveling in this prim's "forward" direction at 1m/s
rotation relativeRot = <0.707107, 0.0, 0.0, 0.707107>; // Rotated 90 degrees on the x-axis compared to this prim
integer startParam = 10;

default
{
    touch_start(integer a)
    {
        vector myPos = llGetPos();
        rotation myRot = llGetRot();

        vector rezPos = myPos+relativePosOffset*myRot;
        vector rezVel = relativeVel*myRot;
        rotation rezRot = relativeRot*myRot;

        llRezObject(object, rezPos, rezVel, rezRot, startParam);
    }
}
```

</details>

## Notes

**Maximum rez distance**

- The `distance` scales with the size of the object the script is in.
- The formula is `10 + llVecMag(llGetScale()) * 0.5`
- The `distance` measured is between the [center](/functions/llGetPos/) of the rezzing `prim` and the [center](/functions/llGetPos/) of the `prim` that is rezzed.
- The tests did not include rezzing from or the rezzing of link_set objects.
- A `0.01` meter cube could rez just beyond `10.0` meters away.
- A `10.0` meter cube could rez just beyond `18.66` meters away.
- A `32.0` meter cube could rez just beyond `37.71` meters away.
- A `64.0` meter cube could rez just beyond `65.42` meters away.

## Known issues

From the issue templates included by the wiki article:

- SVC-3145 (bug): group ROLE permissions only work for scripted rez when owner is online
- SVC-6578 (bug): llRezObject at wrong position when rezzing a linkset that was previously rotated in-world.
- SVC-6686 (nf): parcel build permissions needs whitelist
- SCR-485 (nf): **llRezTempObject**() - for temporarily rezzing objects

## See also

### Functions

- [llRezObjectWithParams](/functions/llRezObjectWithParams/) — Modern alternative with more parameters.
- [llRezAtRoot](/functions/llRezAtRoot/) — Rezzes the object at the requested position
- [llGetStartParameter](/functions/llGetStartParameter/)
- [llGodLikeRezObject](/functions/llGodLikeRezObject/)
- [LlGetParcelFlags](/functions/llGetParcelFlags/#examples) — Test if the parcel allows this script to rez

### Events

- [object_rez](/events/object_rez/) — triggered when this object rezzes an object from inventory

---

*Source: [LlRezObject](https://wiki.secondlife.com/wiki/LlRezObject) on the Second Life Wiki. Content from the Second Life Wiki articles LlRezObject (revision 1218754, 2026-03-31), Template:Issues/SVC-3145 (revision 1121032, 2010-12-05), Template:Issues/SVC-6578 (revision 1118642, 2010-12-02), Template:Issues/SVC-6686 (revision 1133874, 2011-02-09), Template:Issues/SCR-485 (revision 1175064, 2012-12-07), Template:LSL Function/inventory (revision 1191151, 2014-06-07) and Template:LSL Function/position (revision 1169387, 2012-06-18), CC BY-SA 3.0.*

---

From lsl.dev: https://lsl.dev/functions/llRezObject/
