# llOwnerSay

*LSL function*

```lsl
void llOwnerSay(string msg);
```

- `string msg`: Text message string to send to the object owner.

- Energy: 10

Sends the chat message msg privately to the object owner (the owner must be currently in the same region for the message to be received).

Says **msg** to the object's owner only, if the owner is currently in the same [region](https://wiki.secondlife.com/wiki/region).

```lsl title="How to use" frame="terminal"
llOwnerSay("");
```

## Caveats

- If **msg** is longer than 1024 bytes, it will be truncated to 1024 bytes. This can convey 1024 ASCII characters, or fewer if non-ASCII are present.
- Silently fails ~45 seconds after the owner leaves the region the object is in.
- Silently fails when the object to which the script is attached is [deed](https://wiki.secondlife.com/wiki/deed)ed to a group.
- Some viewers do not display `llOwnerSay` text when **msg** is empty (`""`).
- Produces swirly particle effects for the owner (who sees the message) but these effects do not appear to be visible to other avatars (who don't).

## Examples

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

```lsl
default
{
    touch_start(integer num_detected)
    {
        llOwnerSay("Ouch!");
    }
}
```

</details>

## Helper functions

```lsl collapse={15-24}
// llOwnerSay extension for preventing silent failures
// paste this code at the top of the script and replace
// any calls to llOwnerSay with uOwnerSayPlus

uOwnerSayPlus(string inputString)
{
    key owner = llGetOwner();

    // single owner that the region still has a handle for
    if (llKey2Name(owner))
    {
        llOwnerSay(inputString);
    }
    // group owned, must send the message publicly
    else if (llList2Key(llGetObjectDetails(llGetKey(), [OBJECT_GROUP]), 0) == owner)
    {
        llWhisper(0, "/me : " + inputString);
    }
    // single owner, not present, send them an IM
    else
    {
        llInstantMessage(owner, inputString);
    }
}
```

## Tests

- [llOwnerSay Test](https://wiki.secondlife.com/wiki/llOwnerSay_Test)

## See also

### Functions

- [llRegionSay](/functions/llRegionSay/) — Sends chat region wide
- [llWhisper](/functions/llWhisper/) — Sends chat limited to 10 meters
- [llSay](/functions/llSay/) — Sends chat limited to 20 meters
- [llShout](/functions/llShout/) — Sends chat limited to 100 meters
- [llRegionSayTo](/functions/llRegionSayTo/) — Sends private chat region wide
- [llInstantMessage](/functions/llInstantMessage/) — Sends private chat anywhere on the grid

---

*Source: [LlOwnerSay](https://wiki.secondlife.com/wiki/LlOwnerSay) on the Second Life Wiki. Content from the Second Life Wiki articles LlOwnerSay (revision 1218357, 2025-07-07), Template:LSL Function/limits (revision 1168817, 2012-06-11) and Template:LSL Function/chat (revision 1192932, 2014-08-23), CC BY-SA 3.0.*

---

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