# Event Filtering Techniques


RudderStack provides different techniques to filter your events before sending them to your specified destinations:

| Technique     | Description    | Connection mode | Applicable  to |
| :--------- | :----------- | :----------- |:----------- |
| [User Transformations]({{< ref "transformations/overview.md" >}}) | Create transformations to filter events by name, type, or any other specific fields. | Cloud mode | <ul><li>[Cloud Apps]({{< ref "sources/event-streams/cloud-apps/_index.md" >}})</li><li>[Reverse ETL]({{< ref "sources/reverse-etl/_index.md" >}})</li></ul> |
| [Client-side Event Filtering]({{< ref "sources/event-streams/sdks/event-filtering.md" >}}) | Allowlist or denylist events while setting up the destination in the RudderStack dashboard. | Device mode | [All SDKs]({{< ref "sources/event-streams/sdks/_index.md" >}}) |
| [Sending events to selective destinations]({{< ref "sources/event-streams/sdks/rudderstack-javascript-sdk/filtering.md" >}}) | Send events only to selective destinations by excluding other device mode integrations. | Device mode | [JavaScript SDK]({{< ref "sources/event-streams/sdks/rudderstack-javascript-sdk/_index.md" >}}) |
| [Filtering selective destinations]({{< ref "user-guides/how-to-guides/how-to-filter-selective-destinations.md" >}})   | Instruct RudderStack to block or send events to selective destinations. | Cloud mode and device mode | <ul><li>[JavaScript SDK]({{< ref "sources/event-streams/sdks/rudderstack-javascript-sdk/filtering.md" >}})</li><li>[Android (Java) SDK]({{< ref "sources/event-streams/sdks/rudderstack-android-sdk/_index.md#enablingdisabling-events-for-specific-destinations" >}})</li><li>[iOS (Obj-C) SDK]({{< ref "sources/event-streams/sdks/rudderstack-ios-sdk/_index.md#enablingdisabling-events-for-specific-destinations" >}})</li></ul> |
