Dye Tester
Try a dye on your card before spending it. Free while on beta.
Type adyetestFree on every server
Loading Dye Tester
Try a dye on your card before spending it. Free while on beta.
Type adyetestFree on every server
Try a dye on your card before spending it. Free while on beta.
Type adyetestFree on every server
Want to see whether a dye matches your card? Run adyetest and Keqing makes a preview using your card and Karuta's dye swatch. It works with regular and Mystic dyes, including the glow shown by a Mystic dye.
Free while on beta. Dye Tester is now a public beta available in every server where Keqing is present. You don't need Keqing Premium. Your server's channel settings and the frame's availability still apply.
This only makes a picture. It doesn't spend your dye, apply it to your card or remove the dye you already have. Karuta's actual result can still look different, even on an approved frame.
Interactive example · owner, wear and approval state are illustrative. Replace the dye placeholder with your dye code in Discord. Custom frames require approval; Proceed is only for the bot developer and superadmins.
Keep all three commands in the same channel. Replace the placeholders with your actual dye and card codes; don't type the angle brackets.
Start the tester
Type adyetest. Keqing asks you to choose a dye.
Look up the dye
Run kv <dye code> yourself. Keqing reads Karuta's Dye Details, then asks for your card.
Look up the card
Run kci <card code> yourself. Keqing reads Karuta's Card Details and uses the frame already on that card.
Check the result
For an approved custom frame with a usable mask, Keqing posts Dye preview. Default edition 1–8 frames can also be used without custom-frame approval. If the frame is not approved or not ready, Keqing explains why instead of showing a preview.
You have two minutes for each missing input. The timer starts again after Keqing accepts the next lookup. Follow the current prompt: running kci while Keqing is asking for kv won't select the card.
The short commands adyet and adyepreview work too. These examples use Keqing's default a prefix; use your server's prefix if it's different.
You don't have to start from scratch. Reply to Karuta's message itself with adyetest, and Keqing keeps that input.
| Reply to | What to do next |
|---|---|
Card Details from kci | Run kv <dye code>. If the card already has a dye, Keqing then asks for kdr <card code> |
Dye Details from kv | Run kci <card code>, then kdr <card code> if needed |
Remove Dye preview from kdr | Run kv <dye code>, then kci for the same card shown in that preview |
A character lookup (klu) isn't Card Details. This tester needs a specific card, so use kci. To try a different frame on a character first, see the Frame Tester.
Press 🎨 on Karuta's Card Details to open the tester with that card selected, then run kv <dye code> when asked.
The shortcut appears only when the card's frame is approved and Dye Tester is enabled in that channel. This approval check also applies to default edition 1–8 frames for the reaction shortcut. Keqing doesn't add 🎨 to Dye Details or Remove Dye previews; you can still reply to those messages with adyetest.
If 🎨 is missing, reply to Card Details with adyetest to check availability. The command allows default edition 1–8 frames without custom-frame approval, but custom frames still need approval. Neither shortcut guarantees a usable mask is ready.
Keqing needs a clean version of the card so the old dye doesn't affect the new preview. Karuta's kdr preview supplies that version without making you remove the dye.
adyetest and supply the dye and card as usual.kdr <card code> in the same channel.Use exactly the same card code for kci and kdr. If you changed the card's appearance between the lookups, run both again so their images match.
You can also start by replying to an existing Remove Dye preview with adyetest, then provide the dye and matching Card Details when asked.
Example: Violet Evergarden already has a dye, and you have supplied the new dye with kv.
This demo makes no changes to a card. In Discord, leave Karuta's removal confirmation untouched.
Custom frames must be approved for dye previews. If yours isn't approved, Keqing says Frame not approved and names the frame. It doesn't render a card or show a Proceed button to ordinary players. When you start by replying to Card Details, it can stop before asking you to look up the dye.
Default Edition 1–8 frames don't need this custom-frame approval, but Keqing still needs a usable dye mask to render them. If an available frame has no reliable mask, it shows Learning, followed by a short message asking you to try again when a reliable preview is available. Sample counts are not shown.
Try another approved frame or come back once your frame is ready. There is no countdown that automatically makes a frame ready, and a server admin's channel setting doesn't approve it.
Illustrative frame status: an ordinary player tries a custom frame that is unapproved, or approved but missing a usable mask.
No card preview, sample counts or Proceed button for ordinary players.
While Keqing is waiting for your dye, card or kdr preview, press the red Cancel button on its message. Only the person who started that tester can cancel it.
The same message changes to Dye preview cancelled, its buttons disappear, and you can run adyetest again in that channel immediately. The bot staff's Proceed prompt also has Cancel. Finished previews and approval notices don't have a Cancel button.
You already have an active preview in this channel and try starting a second one.
The finished message shows your card code, frame name, the chosen dye as a thumbnail and the rendered card. Tester embeds carry the footer Beta · Free while in beta. On an already-dyed card, it also tells you that it used the undyed version from kdr.
Check both the frame colour and, for Mystic dyes, the glow against the card's art. A normal Dye preview is still a preview of Karuta's result; Approximate dye preview adds uncertainty about which frame parts should change.
To compare another dye, run adyetest again or reply to the Card Details with it and look up the next dye. To test the same dye on another card, reply to Dye Details and provide the new card. Each run makes one preview.
Only your own new Karuta lookups fill the tester's prompts. Another player's kv or kci won't take over your session. You can have one active dye preview per channel; finish it or press Cancel before starting another there.
For a closer look at a Mystic dye's colours and glow on their own, see the Dye Extractor, which is a separate Premium feature.
Switch between the examples to see Keqing's reply and what to try next.
Use Card Details that identifies a custom frame or a default edition frame. This example illustrates missing frame information.
| What you see | What to do |
|---|---|
| Dye previews are available in servers. | Run the tester in a server channel, rather than a DM |
| Dye testing is off in this channel. | Use an enabled channel, or ask an admin to change Dye Tester under Feature restrictions. It follows Frame Testers unless overridden |
| A request to reply to Card Details, Dye Details or Remove Dye | Reply directly to the supported Karuta message, or run adyetest without a reply |
| Already waiting | Finish your current preview in this channel or press Cancel |
| Card has no frame | Use Card Details that identifies a custom frame or a default edition frame |
| Undyed preview needed | Run kdr for the requested card and leave the confirmation buttons untouched |
| The tester keeps waiting after a lookup | Run the lookup yourself, in the same channel, for the input currently requested. A kdr or kci for a different card won't match |
| Dye preview closed / No card arrived | An input or Proceed timed out. Run adyetest again and supply each requested input within two minutes |
| Frame not approved | Try an approved custom frame, or wait for this frame to be approved. Channel settings and Premium do not bypass approval |
| Learning with no Proceed button | The frame has no reliable preview yet. Try another available frame; Proceed is restricted to the bot developer and superadmins |
| No usable undyed sample or neutral frame edge | Try another undyed card wearing that frame. Keqing couldn't estimate the dyeable areas from the available images |
| Remove Dye preview doesn't match the card | Run fresh kci and kdr lookups for the same card, without changing its appearance between them |
| Unsupported Remove Dye image size | Run kdr again and use Karuta's original preview |
| Too little colour to read, or Preview unavailable | Look up the dye again and retry with fresh Karuta messages |
Keqing needs View Channel, Send Messages, Read Message History, Embed Links and Attach Files in the testing channel. To add the 🎨 shortcut itself, it also needs Add Reactions. If it can't read the replied-to message or send the picture, ask a server admin to check its channel permissions.
Server admins can control Dye Tester separately from the other frame tools. This setting covers adyetest and its aliases, the 🎨 shortcut, and whether Keqing adds 🎨 to supported messages. The public beta is free in every server; enabling a channel still does not bypass frame approval.
Open your server's Feature restrictions page in the dashboard, then find Dye Tester.
Try the example below: #trading starts restricted by Frame Testers. Remove its chip under Dye Tester to allow dye previews there, or select another channel to disable them.
Use adyetesting with Discord's Manage Server permission. adyetestsettings is an alias.
| Command | What it does |
|---|---|
adyetesting | Shows whether dye testing is on or off in the current channel |
adyetesting disable #trading | Switches dye testing off in that channel |
adyetesting enable #trading | Allows dye testing there, even if Frame Testers is off |
adyetesting disable / adyetesting enable | Changes the channel you're typing in |
on and off work instead of enable and disable. You can use a channel ID instead of a mention. To check another channel, run adyetesting inside it; a channel mention on its own isn't valid command syntax.
Example: Frame Testers is off in #trading. Check the inherited status, or set a Dye Tester exception.
Dye previews stay off here even if Frame Testers is enabled later.
Keqing stops adding 🎨 in this channel. Pressing an existing 🎨 does not open a dye tester.
Without a Dye Tester exception, the channel follows Frame Testers. An explicit disable keeps dye testing off; an explicit enable allows it even when other frame tools are off. Once you set an exception, later Frame Testers changes don't decide Dye Tester's status in that channel.
When dye testing is off, adyetest says Dye testing is off in this channel. Keqing stops adding 🎨, and pressing an existing 🎨 doesn't open the tester.