diff --git a/Mage.Sets/src/mage/cards/v/VilespawnSpider.java b/Mage.Sets/src/mage/cards/v/VilespawnSpider.java
new file mode 100644
index 0000000000..6e1d9948ed
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/v/VilespawnSpider.java
@@ -0,0 +1,71 @@
+package mage.cards.v;
+
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateAsSorceryActivatedAbility;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.costs.common.SacrificeSourceCost;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.dynamicvalue.DynamicValue;
+import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
+import mage.abilities.effects.common.CreateTokenEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
+import mage.abilities.hint.Hint;
+import mage.abilities.hint.ValueHint;
+import mage.abilities.keyword.ReachAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.CardType;
+import mage.constants.SubType;
+import mage.constants.TargetController;
+import mage.filter.StaticFilters;
+import mage.game.permanent.token.InsectToken;
+
+import java.util.UUID;
+
+/**
+ * @author TheElk801
+ */
+public final class VilespawnSpider extends CardImpl {
+
+    private static final DynamicValue xValue = new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_CREATURE);
+    private static final Hint hint = new ValueHint(
+            "Creature cards in your graveyard", xValue
+    );
+
+    public VilespawnSpider(UUID ownerId, CardSetInfo setInfo) {
+        super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{U}");
+
+        this.subtype.add(SubType.SPIDER);
+        this.power = new MageInt(2);
+        this.toughness = new MageInt(3);
+
+        // Reach
+        this.addAbility(ReachAbility.getInstance());
+
+        // At the beginning of your upkeep, mill a card.
+        this.addAbility(new BeginningOfUpkeepTriggeredAbility(
+                new MillCardsControllerEffect(1), TargetController.YOU, false
+        ));
+
+        // {2}{G}{U}, {T}, Sacrifice Vilespawn Spider: Create a 1/1 green Insect creature token for each creature card in your graveyard. Activate only as a sorcery.
+        Ability ability = new ActivateAsSorceryActivatedAbility(
+                new CreateTokenEffect(new InsectToken(), xValue)
+                        .setText("create a 1/1 green Insect creature token for each creature card in your graveyard"),
+                new ManaCostsImpl<>("{2}{G}{U}")
+        );
+        ability.addCost(new TapSourceCost());
+        ability.addCost(new SacrificeSourceCost());
+        this.addAbility(ability.addHint(hint));
+    }
+
+    private VilespawnSpider(final VilespawnSpider card) {
+        super(card);
+    }
+
+    @Override
+    public VilespawnSpider copy() {
+        return new VilespawnSpider(this);
+    }
+}
diff --git a/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java b/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java
index fc25d67517..f811b71e4e 100644
--- a/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java
+++ b/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java
@@ -120,6 +120,7 @@ public final class InnistradCrimsonVow extends ExpansionSet {
         cards.add(new SetCardInfo("Ulvenwald Oddity", 225, Rarity.RARE, mage.cards.u.UlvenwaldOddity.class));
         cards.add(new SetCardInfo("Valorous Stance", 42, Rarity.UNCOMMON, mage.cards.v.ValorousStance.class));
         cards.add(new SetCardInfo("Vampires' Vengeance", 180, Rarity.UNCOMMON, mage.cards.v.VampiresVengeance.class));
+        cards.add(new SetCardInfo("Vilespawn Spider", 250, Rarity.UNCOMMON, mage.cards.v.VilespawnSpider.class));
         cards.add(new SetCardInfo("Volatile Arsonist", 181, Rarity.MYTHIC, mage.cards.v.VolatileArsonist.class));
         cards.add(new SetCardInfo("Voldaren Estate", 267, Rarity.RARE, mage.cards.v.VoldarenEstate.class));
         cards.add(new SetCardInfo("Weary Prisoner", 184, Rarity.COMMON, mage.cards.w.WearyPrisoner.class));