diff --git a/components/AppealCard.tsx b/components/AppealCard.tsx
index e1f6816..03fd29f 100644
--- a/components/AppealCard.tsx
+++ b/components/AppealCard.tsx
@@ -71,7 +71,7 @@ export default function (props: AppealCardProps) {
   }
 
   return (
-    <Card id={`appeal_${props.user.id}`} w="100%">
+    <Card id={`appeal_${props.user.id}`} key={props.id} w="100%">
       <Modal isOpen={isOpen} onClose={onClose}>
         <ModalOverlay />
         <ModalContent>
diff --git a/components/GameAppealCard.tsx b/components/GameAppealCard.tsx
index 7009b4b..97a0c6c 100644
--- a/components/GameAppealCard.tsx
+++ b/components/GameAppealCard.tsx
@@ -56,7 +56,7 @@ export default function (props: GameAppealProps) {
   const { isOpen, onClose, onOpen } = useDisclosure();
 
   return (
-    <Card w="100%">
+    <Card key={props.roblox_id} w="100%">
       <CardHeader>
         <Heading size="md">Game Ban Appeal for {props.roblox_username}</Heading>
         <Text fontSize="xs">ID: {props.roblox_id}</Text>
diff --git a/components/ReportCard.tsx b/components/ReportCard.tsx
index 11320ea..79df4d4 100644
--- a/components/ReportCard.tsx
+++ b/components/ReportCard.tsx
@@ -41,7 +41,7 @@ export default function (props: ReportCardProps) {
   }
 
   return (
-    <Card w="100%">
+    <Card key={props.id} w="100%">
       <CardHeader>
         <Heading size="lg">
           Report for {props.target_usernames.toString()}