diff --git a/Cargo.toml b/Cargo.toml
index d7ad78586e125f7d07489649a0898cdcb869808d..199438bf480b1cc7722d8792bbafab2e77b7dafa 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -11,8 +11,10 @@ keywords = ["bevy"]
 exclude = ["assets/*"]
 
 [features]
+default_features = ["clipboard"]
 ## For internal use only
 internal-debugging = ["bevy/track_change_detection"]
+clipboard = ["dep:arboard"]
 
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 
@@ -39,7 +41,7 @@ sys-locale = "0.3.0"
 document-features = "0.2.8"
 
 [target.'cfg(not(target_arch = "wasm32"))'.dependencies]
-arboard = "3.2.0"
+arboard = { version = "3.2.0", optional = true }
 
 [target.'cfg(target_arch = "wasm32")'.dependencies]
 js-sys = "0.3.70"
diff --git a/src/input/clipboard.rs b/src/input/clipboard.rs
index fbfe6a899bba8c58a9593f0220813662b7429646..e9edb2b196dee4066d25dfd7aa7407a6eee4a36d 100644
--- a/src/input/clipboard.rs
+++ b/src/input/clipboard.rs
@@ -54,7 +54,7 @@ pub(crate) fn kb_clipboard(
         let readonly = readonly_opt.is_some();
 
         let mut is_clipboard = false;
-        #[cfg(not(target_arch = "wasm32"))]
+        #[cfg(all(feature = "clipboard", not(target_arch = "wasm32")))]
         {
             if let Ok(mut clipboard) = arboard::Clipboard::new() {
                 if command && keys.just_pressed(KeyCode::KeyC) {