Equipment & Items

Tools

Access every tool in Stardew Valley -- upgradeable tools, fishing rods, simple tools, and backpacks -- with filters for type, enchantability, and sorting by name.

Quick Start

import { tools } from 'stardew-valley-data'

// Get all tools
const allTools = tools().get()

// Get only upgradeable tools
const upgradeableTools = tools().upgradeable().get()

// Find a specific tool
const iridiumPickaxe = tools().findByName('Pickaxe')

// Get enchantable tools
const enchantable = tools().canEnchant().get()

Type Definitions

Tool

Tool is a union type: UpgradeableTool | FishingRod | SimpleTool | Backpack.

UpgradeableTool

FieldTypeDescription
idstringUnique identifier
type'upgradeable'Always 'upgradeable'
namestringDisplay name (e.g., Hoe, Pickaxe, Axe)
descriptionstringIn-game description
canEnchantbooleanWhether the tool can be enchanted at the Forge
levelsUpgradeLevel[]Available upgrade tiers

UpgradeLevel

FieldTypeDescription
levelToolLevelUpgrade tier name
imagestring | nullRelative path to the image, or null
upgradeCostnumber | nullGold cost to upgrade, or null for the basic tier
materialNamestring | nullMaterial needed (e.g., Copper Bar), or null
materialQuantitynumber | nullQuantity of material needed, or null
descriptionstringDescription of what this upgrade level does

ToolLevel

type ToolLevel = 'basic' | 'copper' | 'steel' | 'gold' | 'iridium'

FishingRod

FieldTypeDescription
idstringUnique identifier
type'fishing-rod'Always 'fishing-rod'
namestringDisplay name
descriptionstringIn-game description
imagestringRelative path to the rod image
costnumber | nullPurchase cost in gold, or null if free
fishingLevelRequirednumber | nullFishing level needed, or null
baitbooleanWhether the rod supports bait
tackleSlotsnumberNumber of tackle slots
canEnchantbooleanWhether the rod can be enchanted at the Forge
obtainstringHow to obtain this rod

SimpleTool

FieldTypeDescription
idstringUnique identifier
type'simple'Always 'simple'
namestringDisplay name
descriptionstringIn-game description
imagestringRelative path to the tool image
costnumber | nullPurchase cost in gold, or null if free
obtainstringHow to obtain this tool

Backpack

FieldTypeDescription
idstringUnique identifier
type'backpack'Always 'backpack'
namestringDisplay name
descriptionstringIn-game description
imagestringRelative path to the backpack image
costnumberPurchase cost in gold
slotsnumberNumber of inventory slots

ToolType

type ToolType = 'upgradeable' | 'fishing-rod' | 'simple' | 'backpack'

Query Methods

Create a query with the tools() function. Every filter and sort method returns a new ToolQuery, so you can chain calls in any order.

Filter Methods

MethodSignatureDescription
byTypebyType(type: ToolType): ToolQueryFilter by tool type string.
upgradeableupgradeable(): ToolQueryFilter to upgradeable tools (Hoe, Watering Can, Pickaxe, Axe, Trash Can).
fishingRodsfishingRods(): ToolQueryFilter to fishing rods.
simplesimple(): ToolQueryFilter to simple tools (no upgrades).
backpacksbackpacks(): ToolQueryFilter to backpacks.
canEnchantcanEnchant(): ToolQueryFilter to tools that can be enchanted at the Forge.

Sort Methods

MethodSignatureDescription
sortByNamesortByName(order?: 'asc' | 'desc'): ToolQuerySort alphabetically by name. Default: 'asc'.

Terminal Methods

These methods are inherited from the base query and return actual values instead of a new query.

MethodSignatureDescription
getget(): Tool[]Return all results as an array.
firstfirst(): Tool | undefinedReturn the first result, or undefined if empty.
findfind(id: string): Tool | undefinedFind an item by its exact ID.
findByNamefindByName(name: string): Tool | undefinedFind an item by name (case-insensitive exact match).
countcount(): numberReturn the number of results.

Examples

List upgradeable tools and their upgrade costs

import { tools } from 'stardew-valley-data'

const upgradeableTools = tools().upgradeable().get()
upgradeableTools.forEach((tool) => {
  console.log(`\n${tool.name}:`)
  tool.levels.forEach((lvl) => {
    const cost = lvl.upgradeCost
      ? `${lvl.upgradeCost}g + ${lvl.materialQuantity}x ${lvl.materialName}`
      : 'Starting tool'
    console.log(`  ${lvl.level}: ${cost}`)
  })
})

Find fishing rods that support bait

import { tools } from 'stardew-valley-data'

const baitRods = tools()
  .fishingRods()
  .get()
  .filter((rod) => rod.bait)

baitRods.forEach((rod) =>
  console.log(`${rod.name}: ${rod.tackleSlots} tackle slot(s)`),
)

Get all enchantable tools

import { tools } from 'stardew-valley-data'

const enchantable = tools().canEnchant().sortByName().get()
enchantable.forEach((t) => console.log(t.name))

List backpack upgrades

import { tools } from 'stardew-valley-data'

const backpacks = tools().backpacks().get()
backpacks.forEach((bp) =>
  console.log(`${bp.name}: ${bp.slots} slots — ${bp.cost}g`),
)

Count tools by type

import { tools } from 'stardew-valley-data'

console.log(`Total tools: ${tools().count()}`)
console.log(`Upgradeable: ${tools().upgradeable().count()}`)
console.log(`Fishing rods: ${tools().fishingRods().count()}`)
console.log(`Simple tools: ${tools().simple().count()}`)
console.log(`Backpacks: ${tools().backpacks().count()}`)
Previous
Trinkets