diff --git a/Cargo.lock b/Cargo.lock
index ec01a84..ebbd5f3 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -351,7 +351,6 @@ dependencies = [
  "async-compression 0.4.1",
  "async-stream",
  "async_zip",
- "bincode",
  "fmmap",
  "futures",
  "futures-core",
@@ -359,6 +358,7 @@ dependencies = [
  "insta",
  "memmap",
  "pin-project",
+ "postcard",
  "serde",
  "serde_derive",
  "serde_json",
@@ -467,6 +467,12 @@ version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b"
 
+[[package]]
+name = "cobs"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15"
+
 [[package]]
 name = "colorchoice"
 version = "1.0.0"
@@ -1248,6 +1254,16 @@ dependencies = [
  "plotters-backend",
 ]
 
+[[package]]
+name = "postcard"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c9ee729232311d3cd113749948b689627618133b1c5012b77342c1950b25eaeb"
+dependencies = [
+ "cobs",
+ "serde",
+]
+
 [[package]]
 name = "ppv-lite86"
 version = "0.2.17"
diff --git a/lib/Cargo.toml b/lib/Cargo.toml
index a409f7c..c0566ab 100644
--- a/lib/Cargo.toml
+++ b/lib/Cargo.toml
@@ -12,40 +12,16 @@ description = "Библиотека для доступа к файлу базы
 [features]
 default = []
 sync = ["zstd", "memmap"]
-async = [
-    "futures",
-    "futures-core",
-    "futures-util",
-    "fmmap",
-    "tokio",
-    "async-compression",
-    "async-stream",
-    "pin-project",
-]
+async = ["futures", "futures-core", "futures-util", "fmmap", "tokio", "async-compression", "async-stream", "pin-project"]
 source = ["zip"]
-source_async = [
-    "async_zip",
-    "tokio",
-    "futures",
-    "futures-core",
-    "futures-util",
-    "async-stream",
-]
+source_async = ["async_zip", "tokio", "futures", "futures-core", "futures-util", "async-stream"]
 convert = ["zip"]
-convert_async = [
-    "futures",
-    "futures-core",
-    "futures-util",
-    "async-stream",
-    "async_zip",
-    "tokio",
-]
+convert_async = ["futures", "futures-core", "futures-util", "async-stream", "async_zip", "tokio"]
 
 [dependencies]
 serde = "1.0"
 serde_derive = "1.0"
 serde_json = "1.0"
-bincode = "^2.0.0-rc.2"
 zip = { version = "0.6", optional = true }
 async_zip = { version = "0.0.15" , features = [
     "zstd",
@@ -70,6 +46,7 @@ async-stream = { version = "0.3", optional = true }
 zstd = { version = "^0.12", default-features = false, optional = true }
 memmap = { version = "0.7.0", optional = true }
 pin-project = { version = "1.1.3", optional = true }
+postcard = { version = "1.0.6", default-features = false, features = ["use-std"] }
 
 [dev-dependencies]
 insta = { version = "1.31.0", features = ["yaml"] }
diff --git a/lib/src/questions.rs b/lib/src/questions.rs
index 4bfc7b9..29a0745 100644
--- a/lib/src/questions.rs
+++ b/lib/src/questions.rs
@@ -1,8 +1,6 @@
 use serde_derive::{Deserialize, Serialize};
 
-#[derive(
-    Debug, Default, Clone, Serialize, Deserialize, bincode::Decode, bincode::Encode, PartialEq,
-)]
+#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)]
 pub struct BatchInfo {
     #[serde(default, skip_serializing_if = "String::is_empty")]
     pub filename: String,
@@ -32,9 +30,7 @@ pub struct BatchInfo {
     pub rating: String,
 }
 
-#[derive(
-    Debug, Default, Clone, Serialize, Deserialize, bincode::Decode, bincode::Encode, PartialEq,
-)]
+#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)]
 pub struct Question {
     #[serde(default, skip_serializing_if = "u32_is_zero")]
     pub num: u32,
diff --git a/lib/src/util.rs b/lib/src/util.rs
index e7c431a..28e90cc 100644
--- a/lib/src/util.rs
+++ b/lib/src/util.rs
@@ -12,46 +12,3 @@ where
         self.map_err(|e| e.to_string())
     }
 }
-
-#[cfg(any(feature = "sync", feature = "async"))]
-mod bincode_utils {
-    use std::ops::{Deref, DerefMut};
-
-    use bincode::enc::write::Writer;
-    use bincode::error::EncodeError;
-
-    /// struct that allows [`Vec<u8>`] to implement [bincode::enc::write::Writer] trait
-    pub struct BincodeVecWriter {
-        vec: Vec<u8>,
-    }
-
-    impl BincodeVecWriter {
-        pub fn new(vec: Vec<u8>) -> BincodeVecWriter {
-            BincodeVecWriter { vec }
-        }
-    }
-
-    impl Deref for BincodeVecWriter {
-        type Target = Vec<u8>;
-
-        fn deref(&self) -> &Self::Target {
-            &self.vec
-        }
-    }
-
-    impl DerefMut for BincodeVecWriter {
-        fn deref_mut(&mut self) -> &mut Self::Target {
-            &mut self.vec
-        }
-    }
-
-    impl Writer for BincodeVecWriter {
-        fn write(&mut self, bytes: &[u8]) -> Result<(), EncodeError> {
-            self.vec.extend_from_slice(bytes);
-            Ok(())
-        }
-    }
-}
-
-#[cfg(any(feature = "sync", feature = "async"))]
-pub use bincode_utils::BincodeVecWriter;