[Home](./index.md) > [bitburner](./bitburner.md) > [NS](./bitburner.ns.md) > [writePort](./bitburner.ns.writeport.md)
## NS.writePort() method
Write data to a port.
**Signature:**
```typescript
writePort(portNumber: number, data: any): any;
```
## Parameters
|
Parameter
|
Type
|
Description
|
|
portNumber
|
number
|
Port to write to. Must be a positive integer.
|
|
data
|
any
|
Data to write, it's cloned with structuredClone().
|
**Returns:**
any
The data popped off the queue if it was full, or null if it was not full.
## Remarks
RAM cost: 0 GB
Write data to the given Netscript port.
There is a limit on the maximum number of ports, but you won't reach that limit in normal situations. If you do, it usually means that there is a bug in your script that leaks port data. A port is freed when it does not have any data in its underlying queue. `ns.clearPort` deletes all data on a port. `ns.readPort` reads the first element in the port's queue, then removes it from the queue. Ports are shared across all hosts and contents are reset on game restart.