diff --git a/code/game/objects/items/devices/compressionkit.dm b/code/game/objects/items/devices/compressionkit.dm
new file mode 100644
index 0000000000..387b8a3244
--- /dev/null
+++ b/code/game/objects/items/devices/compressionkit.dm
@@ -0,0 +1,62 @@
+/obj/item/compressionkit
+ name = "bluespace compression kit"
+ desc = "An illegally modified BSRPED, capable of reducing the size of most items."
+ icon = 'icons/obj/device.dmi'
+ icon_state = "compression" // aicard-full
+ item_state = "RPED"
+ lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
+ w_class = WEIGHT_CLASS_NORMAL
+ var/charges = 5
+
+/obj/item/compressionkit/suicide_act(mob/living/carbon/M)
+ M.visible_message("[M] is sticking their head in [src] and turning it on! [M.p_theyre(TRUE)] going to compress their own skull!")
+ var/obj/item/bodypart/head = M.get_bodypart("head")
+ if(!head)
+ return
+ var/turf/T = get_turf(M)
+ var/list/organs = M.getorganszone("head") + M.getorganszone("eyes") + M.getorganszone("mouth")
+ for(var/internal_organ in organs)
+ var/obj/item/organ/I = internal_organ
+ I.Remove(M)
+ I.forceMove(T)
+ head.drop_limb()
+ qdel(head)
+ new M.gib_type(T,1,M.get_static_viruses())
+ M.add_splatter_floor(T)
+ playsound(M, 'sound/weapons/flash.ogg', 100, 1, -6)
+ playsound(M, 'sound/effects/splat.ogg', 50, 1)
+
+ return OXYLOSS
+
+/obj/item/compressionkit/afterattack(atom/target, mob/user, proximity)
+ . = ..()
+ if(!proximity || !target)
+ return
+ if(istype(target, /obj/item))
+ var/obj/item/O = target
+ if(charges == 0)
+ playsound(get_turf(src), 'sound/machines/buzz-two.ogg', 100, 1, -6)
+ to_chat(user, "The bluespace compression kit is out of charges! Recharge it with bluespace crystals.")
+ return
+ if(O.w_class == 1)
+ playsound(get_turf(src), 'sound/machines/buzz-two.ogg', 100, 1, -6)
+ to_chat(user, "[target] cannot be compressed smaller!.")
+ return
+ if(O.GetComponent(/datum/component/storage))
+ to_chat(user, "You feel like compressing an item that stores other items would be counterproductive.")
+ return
+ if(O.w_class > 1)
+ O.w_class -= 1
+ playsound(get_turf(src), 'sound/weapons/flash.ogg', 100, 1, -6)
+ to_chat(user, "You successfully compress [target]!")
+ charges -= 1
+ else
+ to_chat(user, "Anomalous error. Summon a coder.")
+
+/obj/item/compressionkit/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/stack/ore/bluespace_crystal))
+ to_chat(user, "You insert [I] into [src].")
+ qdel(I)
+ charges += 2
\ No newline at end of file
diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm
index 798b495cfd..8510e0c830 100644
--- a/code/modules/uplink/uplink_items.dm
+++ b/code/modules/uplink/uplink_items.dm
@@ -1247,6 +1247,15 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/codespeak_manual/unlimited
cost = 3
+/datum/uplink_item/device_tools/compressionkit
+ name = "Bluespace Compression Kit"
+ desc = "A modified version of a BSRPED that can be used to reduce the size of most items while retaining their original functions! \
+ Does not work on storage items. \
+ Recharge using bluespace crystals. \
+ Comes with 5 charges."
+ item = /obj/item/compressionkit
+ cost = 5
+
// Implants
/datum/uplink_item/implants
category = "Implants"
diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi
index becb58568f..4c15e69afc 100644
Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index a8c692d023..8eab772da7 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -834,6 +834,7 @@
#include "code\game\objects\items\devices\beacon.dm"
#include "code\game\objects\items\devices\camera_bug.dm"
#include "code\game\objects\items\devices\chameleonproj.dm"
+#include "code\game\objects\items\devices\compressionkit.dm"
#include "code\game\objects\items\devices\dogborg_sleeper.dm"
#include "code\game\objects\items\devices\doorCharge.dm"
#include "code\game\objects\items\devices\electroadaptive_pseudocircuit.dm"